我正在尝试设置一个 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 {
空间很重要!