Nginx 역방향 프록시는 내부 네트워크에서만 작동합니다.

Nginx 역방향 프록시는 내부 네트워크에서만 작동합니다.

다음 목표를 달성하고 내부 네트워크에서 작동하도록 하고 싶었지만 외부에서는 작동하지 않습니다.

목표: 서로 다른 개인 IP 주소를 가진 역방향 프록시 n 서버에 nginx를 배포하고 라우터에서 포트 80/443만 열어 백엔드의 Nginx 서버로 전달합니다.

Ubuntu 22.04 LTS의 Ngix 버전 1.18.0(Jammy Jellyfish)

내 라우터의 공용 IP를 가리키는 도메인 이름이 있고, 홈 Wi-Fi(내부 네트워크)에 연결되어 있을 때만 제대로 작동하는 nginx 역방향 프록시 구성이 있지만, 백엔드 서버를 시도하면 액세스할 수 없습니다. 예를 들어 내 휴대폰의 LTE.

내 reverse-proxy.conf는 다음과 같습니다.

    server {
        server_name my.domainname.com;
        access_log /var/log/nginx/reverse-access.log;
        error_log /var/log/nginx/reverse-error.log;
        
        listen 443 ssl;
        listen [::]:443 ssl;
        ssl_certificate /etc/ssl/certs/localhost.crt;
        ssl_certificate_key /etc/ssl/private/localhost.key;
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;


        location /guac/ {
        proxy_pass http://privateip1:port/guacamole/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_cookie_path /guacamole/ /guac/;
        access_log off;
        }

        location / {
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_pass http://privateip2:port;
        
        }
        

        location /api {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://privateip:port;
        }


    }

    server {
        listen 80;
        listen [::]:80;
        server_name my.domainname.com;
        return 301 https://$server_name$request_uri;
    }

자세한 내용은 브라우저가 개인 IP 주소 192.xxx에 액세스하려고 시도하는 것을 전화기에서 확인한 다음 라우터에서 다른 포트 전달 규칙을 만들고 해당 서버를 가리키려고 시도했지만 여전히 연결할 수 없는 오류가 발생했습니다. 새로 열린 포트를 사용하여 개인 IP를 라우터의 공용 IP로 바꾼 후 내 전화. 또한 해당 서버의 방화벽 규칙이 해당 포트에서 tcp/udp를 허용하고 도중에 아무 것도 없는지 확인하도록 허용했지만 여전히 운이 좋지 않습니다.

그래서 제 질문은 'nginx 리버스 프록시를 사용하여 이 목표를 달성할 수 있습니까?'입니다.

더 많은 정보가 필요하면 알려주시기 바랍니다.

감사해요,

답변1

알았어, 알아냈어, 내 라우터였어. DMZ를 켜고 Nginx 서버를 DMZ 호스트로 추가했는데 이제 인터넷에서 액세스할 수 있습니다.

두 개의 게시물이 이 문제를 파악하는 데 도움이 되었습니다.

슈퍼유저 게시물

스택오버플로우 게시물

감사해요,

관련 정보