You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Nginx配置子目录到端口的反向代理问题求助

Nginx配置子目录到端口的反向代理问题求助

各位大佬,我现在折腾Nginx反向代理快被逼疯了,实在搞不定来求帮忙!

情况是这样的:我的Nginx服务器监听80端口,运行起来一切正常。现在我有个带表单的页面,想从这个页面(<IP>/sub/index.html)发送.json格式的POST请求到8000端口的Python HTTP服务器做处理。我希望前端能通过访问<IP>/sub/folder/来指向这个后端服务,这样页面里用相对路径./folder就能直接发起请求,不用写全路径。

目前测试下来,直接用curl <IP>:8000是能正常连接到后端服务器并拿到正确响应的,说明后端本身没问题。

我一开始尝试用这样的Nginx配置来做反向代理:

location /sub/folder/ {
    proxy_pass http://127.0.0.1:8000/;
}

结果访问<url>/sub/folder的时候,会先触发301重定向到/sub/folder/,但跳转到这个路径之后就直接返回404了。

后来我把location的路径改成/sub/folder(去掉末尾的斜杠),结果直接访问<url>/sub/folder就返回404,连重定向都没了。

我还试了各种其他方法:换成HTTPS协议、把127.0.0.1改成localhost、去掉proxy_pass末尾的斜杠、甚至尝试代理到https://<IP>:<port>/sub/folder(虽然后端服务是在根路径上),但不管怎么调都解决不了问题。

我的完整nginx.conf内容如下:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;
    tcp_nopush on;

    keepalive_timeout 65;

    gzip on;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen 80;
        server_name _;

        root /usr/share/nginx/html;
        index index.html index.htm;

        location / {
            try_files $uri $uri/ =404;
        }

        location /sub/folder/ {
            proxy_pass http://127.0.0.1:8000/;
        }
    }
}

有没有老哥能帮我分析下问题出在哪?真的卡在这里好久了😭

备注:内容来源于stack exchange,提问作者bitwise

火山引擎 最新活动