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




