nginx를 실행하는 Debian 서버가 있고 해당 nginx 구성은 다음과 같습니다.
server {
listen 80 default_server;
root /var/www/serviceserver1;
index index.html index.htm;
location /api {
proxy_redirect http://localhost:3001/ /api;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass http://localhost:3001;
}
location /graphql {
proxy_redirect http://localhost:3001/ /graphql;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass http://localhost:3001;
}
# Root route
location = / {
try_files $uri /landing/index.html;
}
# admin routes
location /admin {
try_files $uri $uri/ /admin/index.html;
}
# analytics routes
location /analytics {
try_files $uri $uri/ /analytics/index.html;
}
# landing routes
location /landing {
try_files $uri $uri/ /landing/index.html;
}
# Any other route default to landing
location / {
try_files $uri $uri/ /landing/index.html;
}
}
내 LAN에서는 잘 작동합니다.
현재 인터넷에 대한 외부 연결을 설정하고 있습니다. 가상 서버 구성과 함께 TP-LINK TL-R470T+를 사용하여 포트(8000 외부에서 80 내부)를 리디렉션합니다.
외부에서 브라우저에 액세스하려고 할 때 다음을 사용합니다.
http://170.80.200.100:8000/landing/
모두 괜찮습니다.
웹 애플리케이션에서 페이지를 전환해야 할 때 문제가 발생합니다. 탐색할 때마다 포트가 없는 URL로 돌아갑니다. 예를 들어 IP 주소는 실제 주소가 아닙니다.
http://170.80.200.100/landing/
또는
http://170.80.200.100/analytics/
따라서 다른 페이지로 이동할 때마다 주소 표시줄에 :8000을 수동으로 입력해야 하는데 이는 실용적이지 않습니다.
인터넷에서 URL에 액세스할 때 방문한 모든 URL에서 원래 포트(:8000)를 유지하도록 NGINX 파일을 어떻게 설정합니까?
내부 포트를 80에서 8000으로 변경해 보았는데 내부 LAN에서 접속하면 애플리케이션이 잘 실행되는데 내부적으로는 8000으로 설정할 수 없고 외부적으로는 8000으로 설정해야 한다는 점 참고해주세요.