nginx代理不工作的服务器块

时间:2017-01-28 19:36:31

标签: nginx proxy

我试图在子目录上设置代理但不能让它工作......

我想将子目录中的所有请求代理到另一个端口

例如

http://domain.com/websocket/test.php => http://domain.com:8080/websocket/test.php

但是无法使其正常工作..如果要求匹配404的路径,我现在已经尝试返回/websocket。但这不会起作用

我在这里缺少什么?!

PHP文件按原样执行..

文件结构

/test.php
/websocket/server.php
/websocket/test.php

请求所有网址都没有问题,但/websocket/server.php/websocket/test.php应该返回404(请查看nginx conf)

nginx的

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

location ~ \.php$ {
    include  /var/ini/nginx/fastcgi.conf;
    fastcgi_pass  php;
    fastcgi_index  index.php;
}

location /websocket {
    return 404;

    proxy_pass http://localhost:8080;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

1 个答案:

答案 0 :(得分:1)

location块的各种类型及其评估顺序的规则。有关详细信息,请参阅this document

location ~ ...块是正则表达式类型,按顺序计算,但优先级高于任何前缀位置(例如location /websocket)。

如果您希望前缀位置的优先级高于正则表达式位置块,则: - 使用^~修饰符,或 - 将其转换为正则表达式块并首先进行排序。

例如:

location ^~ /websocket { ... }