我的 Nginx 反向代理配置有什么问题?

我的 Nginx 反向代理配置有什么问题?

我正在尝试设置一个 nginx 服务器来为 myurl.com 上的 node.js 应用程序提供服务,同时为 myurl.com/phpapp/ 上的一些 php 内容提供服务

我让 php 应用程序使用 fastcgi_pass 与代理一起工作。但是当我开始为 node.js 应用程序配置代理时,它破坏了对 php 应用程序的代理。

这两个应用程序均位于根目录中各自的目录中。

据我所知http://wiki.nginx.org/HttpCoreModule#location它实际上不应该比定义一个位置 /phpapp/.*.php 并从那里执行 fastcgi_pass 更重要,不是吗?

但我无法让它工作。我的 nginx access.log 告诉我找不到文件

"GET /sqlbuddy/js/movement.js/?ver=1_3_3 HTTP/1.1" 404 774 "http://192.168.0.174/sqlbuddy/login.php"

登录页面显示,但没有样式。此外,当我尝试登录时它不起作用,只是返回到同一页面。

我尝试创建一个子域名,例如 phpapp.myurl.com 并从那里提供 php 服务,但是我遇到了一些 url 冲突,老实说,我并没有花太多时间尝试使其工作。

经过几天的苦思冥想,我甚至不确定这是否还可能实现?我是否必须将 phpapp 拆分到另一个子域?

这是我当前的配置文件

server {
    listen   80; ## listen for ipv4; this line is default and implied

    root /usr/share/nginx/html;
    index index.html index.htm index.php;

    # Make site accessible from http://localhost/
    server_name localhost myurl.com

    location ~*/sqlbuddy/.\*.php{
            try_files $uri $uri/ =404;
            allow 192.168.0.0/24;
            allow 127.0.0.1;
            deny all;
            include fastcgi_params;
            fastcgi_pass php5-fpm-sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_intercept_errors on;
    }
   location ~\.php$ {
            try_files $uri =404;
            allow 192.168.0.0/24;
            allow 127.0.0.1;
            deny all;       
            include fastcgi_params;
            fastcgi_pass php5-fpm-sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_intercept_errors on;
    }


    location / {
            allow 192.168.0.0/24;
            allow 127.0.0.1;
            proxy_pass      http://127.0.0.1:2368;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_redirect default;
    }

    location  /ghost/ {
            allow 192.168.0.0/24;
            allow 127.0.0.1;
            deny all;

            proxy_set_header Host           $http_host;
            proxy_set_header X-Real-IP      $remote_addr;
            proxy_pass      http://127.0.0.1:2368;
            proxy_redirect default;
    }

}

当 sqlbuddy 正常工作时,根位置完全是空的。

任何指点都将不胜感激。谢谢!

答案1

阅读nginx 位置文档再次尝试。尝试一下:

location ^~ /sqlbuddy/.*\.php {

或者可能:

location ~* ^/sqlbuddy/.*\.php {

空间很重要!

相关内容