가상 서버 뒤에서 nginx에 액세스하면 포트 번호가 손실됩니다.

가상 서버 뒤에서 nginx에 액세스하면 포트 번호가 손실됩니다.

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/admin/

또는

http://170.80.200.100/analytics/

따라서 다른 페이지로 이동할 때마다 주소 표시줄에 :8000을 수동으로 입력해야 하는데 이는 실용적이지 않습니다.

인터넷에서 URL에 액세스할 때 방문한 모든 URL에서 원래 포트(:8000)를 유지하도록 NGINX 파일을 어떻게 설정합니까?


내부 포트를 80에서 8000으로 변경해 보았는데 내부 LAN에서 접속하면 애플리케이션이 잘 실행되는데 내부적으로는 8000으로 설정할 수 없고 외부적으로는 8000으로 설정해야 한다는 점 참고해주세요.

관련 정보