V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
liang00
V2EX  ›  NGINX

关于 400 Bad Request

  •  
  •   liang00 · 2023-01-14 16:10:49 +08:00 · 1297 次点击
    这是一个创建于 469 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    3 条回复    2023-01-14 16:41:00 +08:00
    lanternxx
        1
    lanternxx  
       2023-01-14 16:29:30 +08:00
    error_page 497 https://domain:9000;
    leoleoasd
        2
    leoleoasd  
       2023-01-14 16:33:35 +08:00
    error_page 497 =307 https://$host:$server_port$request_uri;
    liang00
        3
    liang00  
    OP
       2023-01-14 16:41:00 +08:00 via iPhone
    @lanternxx 已解决,感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2521 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:59 · PVG 23:59 · LAX 08:59 · JFK 11:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.