proxy_pass 在 NGINX 配置中的位置区域中不起作用

问题描述 投票:0回答:1

我有这个 nginx 配置:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
        worker_connections 768;
}
http {
        server {
            listen 443 default_server ssl;  
            ssl_certificate /etc/nginx/certs/fullchain.pem;
            ssl_certificate_key /etc/nginx/certs/privkey.pem;

            location /private/ {
                #root /usr/share/nginx/html;
                #index index.html;
                proxy_pass http://localhost:5001/;
            }

             location / {
                proxy_pass http://localhost:5000/;
            }
        }


        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets on;
        ssl_session_timeout 28h;
        ssl_early_data on;
        ssl_buffer_size 16k;
        http2_chunk_size  8k;

我的本地主机上也有相同的 python 服务器:

tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      549524/python3
tcp        0      0 127.0.0.1:5001          0.0.0.0:*               LISTEN      549204/python3

问题是 location / 中的 proxy_pass 始终有效,如果我关闭 5000 端口上的 python 服务器,nginx 会向我提出 504 bad gateway。 /private/ 位置中的 proxy_pass 不起作用,并且 nginx 服务器总是向我提示 404 未找到。

如果我关闭 5001 上的服务器,什么都不会改变。但如果我这样改变这个区域:

            location /private/ {
                root /usr/share/nginx/html;
                index index.html;
                #proxy_pass http://localhost:5001/;
            }

一切都会正常,nginx 返回给我index.html。

为什么 proxy_pass 在此位置区域不起作用?

nginx proxy location proxypass
1个回答
0
投票

您应该尝试从 /private/ 中删除第二个 /:

    location /private {
                #root /usr/share/nginx/html;
                #index index.html;
                proxy_pass http://localhost:5001/;
    }
© www.soinside.com 2019 - 2024. All rights reserved.