无法将请求从Nginx代理到服务器

时间:2019-06-20 05:40:05

标签: nginx

我正在尝试将HTTP请求代理到通过nginx在某些IP和端口上运行的应用程序服务器。这是我在nginx中用来实现此目的的配置:

server {
    location /api/v1/ {
        proxy_pass http://myserver:9191/api/v1/;
    }
}

我将nginx作为docker容器运行,以侦听端口4000上的请求。现在,当我像这样向我的nginx服务器发出请求时

http://127.0.0.1:4000/api/v1/ping

我收到404错误。日志显示此消息:

2019/06/20 05:33:59 [error] 8#8: *1 open() "/usr/share/nginx/html/api/v1/ping" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /api/v1/ping HTTP/1.1", host: "127.0.0.1:4000"

为什么Nginx无法将我的请求代理到应用服务器?而我应该在我的nginx配置文件中解决什么才能成功代理。

2 个答案:

答案 0 :(得分:0)

location ^~ /api/v1/ {
    proxy_pass http://127.0.0.1:9191;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size    1000m;
}

答案 1 :(得分:0)

我想出了解决方案,实际上nginx的docker映像包含一个default.conf文件,该文件的配置指向'/'路径,这导致它默认为html文件夹。