Nginx会将https自定义端口redirect到https默认端口,仅用于远程连接

我正在运行一个Web应用程序,其余的API在nginx反向代理之后。

我将我的应用程序设置为以端口443(打开端口443和redirect端口80)的https的方式运行Gui应用程序,并使用端口3000的https连接到api。

该应用程序在我的本地主机中工作得很好。 ( https:// localhost工作, https:// localhost:3000检索json数据)。

当我的应用程序部署到服务器并运行而不是本地主机我的公共IP, HTTPS:// my_ip服务应用程序(工作正常),但https:// my_ip:3000它被redirect到https:// my_ip 。

使用curl命令,我看到的答复是:“302find”。

注意:我使用ufw和iptables打开了端口3000。 但没有任何工作。 (我试图打开my_ip和0.0.0.0上的端口)。

这是我的nginx.conf:

server { listen 3000 ssl; listen [::]:3000 ssl ipv6only=on; ssl_certificate /etc/nginx/certs/cert.crt; ssl_certificate_key /etc/nginx/certs/cert.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; #error_page 497 https://$host:3000$request_uri; I tried this solution too with the code 302 too. location / { proxy_pass http://my-api/; proxy_redirect off; proxy_buffering on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; listen [::]:80 ipv6only=on; listen 443 ssl; listen [::]:443 ssl ipv6only=on; ssl_certificate /etc/nginx/certs/cert.crt; ssl_certificate_key /etc/nginx/certs/cert.key; ssl on; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; location / { proxy_pass http://my-gui; proxy_redirect off; 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_buffering on; } } 
  • 是否与server_name有关? 因为它在我的本地主机上工作得很好。
  • 是因为我用api和gui同样的证书吗?
  • 我错过了什么? 所有应用程序(gui,api,nginx)和docker集装箱使用桥梁networking互相链接