请教大家一个问题,现在有一个场景,在一个局域网内的一台 Liunx 主机上,在 8080 端口运行一个 http 服务,然后用 Nginx 443 端口转发 8080 端口,然后在局域网的出口路由器上配置了端口转发,WAN 端口 9000 转发内网 Nginx 的 443 端口.当访问 https://domain:9000 时是正常的,但是 http://domain:9000 会报"The plain HTTP request was sent to HTTPS port",在网上搜索一番后,大多数解决方法是在 Nginx 上添加一段:
server { listen 80; server_name doamin; return 301 https://$host$request_uri; }
但好像和我这个情景不太匹配。 下面是我的 Nginx 配置:
map $http_upgrade $connection_upgrade { default keep-alive; 'websocket' upgrade; } server { listen 443 ssl; server_name domain; ssl_certificate /opt/cert/fullchain.cer; ssl_certificate_key /opt/cert/site.key; client_max_body_size 500M; if ($host != "domain") { return 404; } location / { proxy_pass http://localhost:8080; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /notifications/hub { proxy_pass http://localhost:3012; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } location /notifications/hub/negotitate { proxy_pass http://localhost:8080; } }
请问现在需要做哪些操作可以让 http://domain:9000 自动转到 https://domain:9000
1 shinciao 2023-01-14 16:29:30 +08:00 error_page 497 https://domain:9000; |
2 leoleoasd 2023-01-14 16:33:35 +08:00 error_page 497 =307 https://$host:$server_port$request_uri; |