
我想實現以下目標並使其在內部網路上運行,但是,這在外部網路上不起作用。
目標:部署nginx反向代理n台不同私網ip位址的伺服器,且只在路由器上開放80/443端口,轉送到後端的Nginx伺服器。
Ubuntu 22.04 LTS 上的 Ngix 版本 1.18.0 (Jammy Jellyfish)
我有一個指向我的路由器的公共IP的域名,並且我有一個nginx反向代理配置,該配置僅在我連接到家庭wifi(內部網絡)時才有效,但如果我嘗試使用我的方法,則後端伺服器將無法存取例如,我手機上的 LTE。
這是我的反向代理.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 主機,現在可以從網際網路存取它。
兩篇文章幫助我解決了這個問題:
謝謝,