请教大家一个问题,现在有一个场景,在一个局域网内的一台 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
lanternxx 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;
|