mirror of
https://git.hmsn.ink/kospo/helptalk/api.git
synced 2026-03-20 00:22:26 +09:00
440 lines
11 KiB
Markdown
440 lines
11 KiB
Markdown
# nginx.conf 설정
|
|
|
|
user nginx;
|
|
worker_processes auto;
|
|
|
|
error_log /var/log/nginx/error.log notice;
|
|
pid /var/run/nginx.pid;
|
|
|
|
|
|
events {
|
|
worker_connections 4096;
|
|
}
|
|
|
|
|
|
http {
|
|
include /etc/nginx/mime.types;
|
|
default_type application/octet-stream;
|
|
|
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
'$status $body_bytes_sent "$http_referer" '
|
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
|
|
|
access_log /var/log/nginx/access.log main;
|
|
|
|
sendfile on;
|
|
#tcp_nopush on;
|
|
|
|
keepalive_timeout 65;
|
|
|
|
#gzip on;
|
|
|
|
map $http_upgrade $connection_upgrade {
|
|
default upgrade;
|
|
'' close;
|
|
}
|
|
|
|
|
|
types_hash_max_size 4096;
|
|
|
|
include /etc/nginx/conf.d/*.conf;
|
|
}
|
|
|
|
|
|
# default.conf 설정
|
|
server {
|
|
listen 3000;
|
|
|
|
server_tokens off;
|
|
|
|
location /static {
|
|
alias "E:/IdeaProjects/thelptalk/talk/sample/prod/talk/";
|
|
|
|
expires 1s;
|
|
add_header Cache-Control "public, no-transform";
|
|
add_header 'Access-Control-Allow-Origin' '*';
|
|
add_header 'ACcess-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
|
|
add_header 'Access-Control-Allow-Headers' 'DNT,USer-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
|
|
|
|
autoindex off;
|
|
}
|
|
|
|
|
|
location /stomp {
|
|
proxy_pass http://ap-block;
|
|
|
|
proxy_http_version 1.1;
|
|
|
|
proxy_set_header Host $host;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection $connection_upgrade;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
|
|
# websocket connection alive
|
|
proxy_read_timeout 36000s;
|
|
proxy_send_timeout 36000s;
|
|
|
|
# websocket buffer setting
|
|
proxy_buffer_size 128k;
|
|
proxy_buffers 8 256k;
|
|
proxy_busy_buffers_size 512k;
|
|
|
|
# large data process setting
|
|
client_max_body_size 16M;
|
|
client_body_buffer_size 16M;
|
|
|
|
#temp file setting
|
|
proxy_max_temp_file_size 16M;
|
|
proxy_temp_file_write_size 256k;
|
|
|
|
# request buffer disable
|
|
proxy_request_buffering off;
|
|
|
|
}
|
|
|
|
location /api {
|
|
proxy_pass http://ap-block;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_cache_bypass $http_upgrade;
|
|
|
|
proxy_set_header Cookie $http_cookie;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Forwarded-Host $host;
|
|
proxy_set_header X-Forwarded-Port $server_port;
|
|
|
|
add_header 'ACcess-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
|
|
|
|
proxy_buffering off;
|
|
proxy_request_buffering off;
|
|
proxy_buffer_size 128k;
|
|
proxy_buffers 4 256k;
|
|
proxy_busy_buffers_size 256k;
|
|
|
|
|
|
# large data process setting
|
|
client_max_body_size 100M;
|
|
client_body_buffer_size 100M;
|
|
|
|
proxy_cookie_domain .kospo.co.kr kospo.co.kr;
|
|
}
|
|
|
|
location /logo {
|
|
alias /attach/logo/;
|
|
|
|
expires 7d;
|
|
add_header Cache-Control "public, no-transform";
|
|
add_header 'ACcess-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
|
|
|
|
proxy_cache_valid 200 301 302 7d;
|
|
proxy_cache_valid 404 1m;
|
|
|
|
autoindex off;
|
|
|
|
try_files $uri $uri/ =404;
|
|
}
|
|
|
|
location / {
|
|
root "E:/IdeaProjects/thelptalk/talk/sample/prod";
|
|
index index.html;
|
|
|
|
try_files $uri $uri/ =404;
|
|
}
|
|
|
|
error_page 403 404 500 502 503 504 /error.html;
|
|
location /error.html {
|
|
root /usr/share/nginx/html/;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
upstream ap-block {
|
|
ip_hash;
|
|
#hash $host consistent;
|
|
#hash $proxy_add_x_forwarded_for consistent;
|
|
server 127.0.0.1:8010;
|
|
#server 10.130.7.63:8010;
|
|
#server 10.130.7.64:8010;
|
|
#server 10.130.7.65:8010;
|
|
}
|
|
|
|
upstream ma-block {
|
|
server 127.0.0.1:8010;
|
|
}
|
|
|
|
|
|
server {
|
|
listen 8040;
|
|
server_name talk.kospo.co.kr;
|
|
|
|
server_tokens off;
|
|
|
|
add_header Strict-Tansport-Security "max-age=63072000" always;
|
|
|
|
client_max_body_size 100M;
|
|
|
|
location /api/manual/view {
|
|
proxy_pass http://ap-block;
|
|
|
|
expires 7d;
|
|
add_header Cache-Control "public, no-transform";
|
|
|
|
proxy_cache_valid 200 301 302 1d;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_cache_bypass $http_upgrade;
|
|
|
|
proxy_set_header Cookie $http_cookie;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Forwarded-Host $host;
|
|
proxy_set_header X-Forwarded-Port $server_port;
|
|
|
|
add_header 'ACcess-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
|
|
}
|
|
|
|
location /static {
|
|
alias /appl/helptalk/talk/talk/;
|
|
|
|
expires 1s;
|
|
add_header Cache-Control "public, no-transform";
|
|
add_header 'Access-Control-Allow-Origin' '*';
|
|
add_header 'ACcess-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
|
|
add_header 'Access-Control-Allow-Headers' 'DNT,USer-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
|
|
|
|
autoindex off;
|
|
}
|
|
|
|
|
|
location /logo {
|
|
alias /attach/logo/;
|
|
|
|
expires 7d;
|
|
add_header Cache-Control "public, no-transform";
|
|
add_header 'ACcess-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
|
|
|
|
proxy_cache_valid 200 301 302 7d;
|
|
proxy_cache_valid 404 1m;
|
|
|
|
autoindex off;
|
|
|
|
try_files $uri $uri/ =404;
|
|
}
|
|
|
|
|
|
location /stomp {
|
|
proxy_pass http://ap-block;
|
|
|
|
proxy_http_version 1.1;
|
|
|
|
proxy_set_header Host $host;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection $connection_upgrade;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
|
|
# websocket connection alive
|
|
proxy_read_timeout 36000s;
|
|
proxy_send_timeout 36000s;
|
|
|
|
# websocket buffer setting
|
|
proxy_buffer_size 128k;
|
|
proxy_buffers 8 256k;
|
|
proxy_busy_buffers_size 512k;
|
|
|
|
# large data process setting
|
|
client_max_body_size 16M;
|
|
client_body_buffer_size 16M;
|
|
|
|
#temp file setting
|
|
proxy_max_temp_file_size 16M;
|
|
proxy_temp_file_write_size 256k;
|
|
|
|
# request buffer disable
|
|
proxy_request_buffering off;
|
|
|
|
}
|
|
|
|
location /api {
|
|
proxy_pass http://ap-block;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_cache_bypass $http_upgrade;
|
|
|
|
proxy_set_header Cookie $http_cookie;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Forwarded-Host $host;
|
|
proxy_set_header X-Forwarded-Port $server_port;
|
|
|
|
add_header 'ACcess-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
|
|
|
|
proxy_buffering off;
|
|
proxy_request_buffering off;
|
|
proxy_buffer_size 128k;
|
|
proxy_buffers 4 256k;
|
|
proxy_busy_buffers_size 256k;
|
|
|
|
# large data process setting
|
|
client_max_body_size 100M;
|
|
client_body_buffer_size 100M;
|
|
|
|
proxy_cookie_domain .kospo.co.kr kospo.co.kr;
|
|
|
|
}
|
|
|
|
location /swagger-ui {
|
|
proxy_pass http://ap-block;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_cache_bypass $http_upgrade;
|
|
|
|
proxy_set_header Cookie $http_cookie;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Forwarded-Host $host;
|
|
proxy_set_header X-Forwarded-Port $server_port;
|
|
}
|
|
|
|
|
|
location / {
|
|
expires 1s;
|
|
root /appl/helptalk/talk_vue;
|
|
|
|
index index.html index.htm;
|
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
|
add_header Expires 0;
|
|
}
|
|
|
|
location ~* ^/web* {
|
|
return 301 /;
|
|
}
|
|
|
|
error_page 403 404 500 502 503 504 /error.html;
|
|
location /error.html {
|
|
root /usr/share/nginx/html/;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# k6 부하테스트
|
|
|
|
docker run --rm -v /volume5/dev/k6:/k6 k6-stomp --console-output=/k6/output.log /k6/k6.js
|
|
|
|
docker run --name xk6-stomp -v "/volume5/dev/k6:/xk6" grafana/xk6 build \
|
|
--with github.com/walterwanderley/xk6-stomp
|
|
|
|
|
|
docker run --rm -v "/volume5/dev/k6:/xk6" -w /xk6 grafana/xk6 build --with github.com/walterwanderley/xk6-stomp
|
|
|
|
docker run --rm -v "/volume5/dev/k6:/xk6" -w /xk6 debian:bullseye-slim ./k6 run /xk6/script.js
|
|
|
|
|
|
# rabbitmq stomp 실행
|
|
|
|
rabbitmq-plugins enable rabbitmq_stomp
|
|
|
|
# rabbitmq 포트 설명
|
|
5672 - AMQP:
|
|
|
|
기본 AMQP (Advanced Message Queuing Protocol) 포트
|
|
클라이언트 애플리케이션이 메시지를 주고받는 데 사용
|
|
5671 - AMQP/SSL:
|
|
|
|
SSL을 통한 암호화된 AMQP 연결에 사용
|
|
15672 - HTTP API 및 관리 UI:
|
|
|
|
RabbitMQ 관리 플러그인용 웹 인터페이스
|
|
HTTP API 엔드포인트
|
|
61613 - STOMP:
|
|
|
|
STOMP (Simple Text Oriented Messaging Protocol) 클라이언트 연결용
|
|
STOMP 플러그인이 활성화되어 있어야 함
|
|
61614 - STOMP/SSL:
|
|
|
|
SSL을 통한 암호화된 STOMP 연결에 사용
|
|
1883 - MQTT:
|
|
|
|
MQTT (Message Queuing Telemetry Transport) 클라이언트 연결용
|
|
MQTT 플러그인이 활성화되어 있어야 함
|
|
8883 - MQTT/SSL:
|
|
|
|
SSL을 통한 암호화된 MQTT 연결에 사용
|
|
15674 - STOMP over WebSockets:
|
|
|
|
웹 브라우저에서 STOMP 프로토콜을 사용하기 위한 WebSocket 연결
|
|
15675 - MQTT over WebSockets:
|
|
|
|
웹 브라우저에서 MQTT 프로토콜을 사용하기 위한 WebSocket 연결
|
|
25672 - 노드 간 및 CLI 도구 통신:
|
|
|
|
RabbitMQ 노드 간 통신 및 rabbitmqctl 같은 CLI 도구와의 통신에 사용
|
|
4369 - epmd (Erlang Port Mapper Daemon):
|
|
|
|
Erlang 노드 검색을 위해 사용
|
|
이 중에서 STOMP 관련 포트는 다음과 같습니다:
|
|
|
|
61613: 일반 STOMP 연결
|
|
61614: SSL을 통한 STOMP 연결
|
|
15674: WebSocket을 통한 STOMP 연결
|
|
|
|
# 외부 연계 api
|
|
url: http://{url}/api/message
|
|
method: post
|
|
|
|
parameter
|
|
{
|
|
"type": "MESSAGE",
|
|
"talkId": "0b98e848d5c548a086a9ebf67223416c",
|
|
"message": "작업지시번호 [ORD2024828912] 진행 완료"
|
|
}
|
|
|
|
result
|
|
200 : success
|
|
|
|
|
|
# pg_bigm 설치
|
|
빌드 도구
|
|
postgresql-devel build-essential gcc make
|
|
|
|
git pg_bigm tar.gz 파일 다운로드
|
|
make
|
|
sudo make install
|
|
|
|
postgresql.conf
|
|
shared_preload_libraries = 'pg_bigm'
|
|
|
|
postgresql 재시작
|
|
|
|
모듈 활성화
|
|
create extension pg_bigm;
|
|
|
|
활성화 된 모듈 조회
|
|
select * from pg_extension
|
|
|
|
index 생성
|
|
create index idx_talk_message_full_search on talk_message(message text_pattern_ops);
|
|
|