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 · Jan 14, 2023 · 2458 views
    This topic created in 1248 days ago, the information mentioned may be changed or developed.

    请教大家一个问题,现在有一个场景,在一个局域网内的一台 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 replies    2023-01-14 16:41:00 +08:00
    shinciao
        1
    shinciao  
       Jan 14, 2023
    error_page 497 https://domain:9000;
    leoleoasd
        2
    leoleoasd  
       Jan 14, 2023
    error_page 497 =307 https://$host:$server_port$request_uri;
    liang00
        3
    liang00  
    OP
       Jan 14, 2023 via iPhone
    @lanternxx 已解决,感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3267 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 13:35 · PVG 21:35 · LAX 06:35 · JFK 09:35
    ♥ Do have faith in what you're doing.