我尝试使用 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 示例