nginx:使用 proxy_pass 的简单配置失败

nginx:使用 proxy_pass 的简单配置失败

我尝试使用 nginx v1.10.13 进行简单配置。配置:

events
{

}

http 
{
  server 
  {
    listen       80;

    location = /loc1
    {
      proxy_pass http://192.168.0.5:80/;
    }
  }
}

并尝试此配置curl --data "param1=XXX" -X POST http://192.168.0.4:80/loc1

我查看了192.168.0.5传入连接,但什么也没发生。

我真的不明白哪里出了问题,配置很简单。我匹配了端口上的所有连接80和所有loc1位置。那么为什么我的 curl 命令失败了? curl 命令返回Not found: /...

答案1

尝试其他顺序:

server{
      server_name _;
      root /var/www/;
      index  index.php index.html index.htm;

location / {
    try_files $uri $uri/ /index.php$is_args$args ;
}
这部分
location /what_you_want/ {
    proxy_pass      http://192.168.154.102/;
}

    access_log /var/log/nginx/mp_name_access.log;
    error_log  /var/log/nginx/mp_name_error.log;
}

开头的 http{ 对我来说毫无意义

答案2

这是您的默认配置吗?如果是,参数“server_name”应该已经存在。让我印象深刻的是“location”规范。它应该没有“=”。并且使用 curl 指定端口,这对于 http = 80 来说不是必需的。

我的建议是

http {
  server {
    listen 80;

    location /loc1/ {
      proxy_pass http://192.168.0.5;
    }
  }
}

由于标头对于 proxy_pass 也很重要,因此我宁愿遵循官方示例。nginx proxy_pass 示例

相关内容