我一直无法让 php 脚本与 nginx 配合使用。调用脚本 my-url:90/useraccessauthorization/useraccessauthorization.php 会出现 404 错误。
以下是我的配置详情。有人能告诉我我遗漏了什么吗?提前致谢。
编辑:我还应该提到,运行“/etc/init.d/nginx reload”会给出结果:
重新加载 nginx 配置: nginx:[alert] 无法打开错误日志文件:open()“/var/log/nginx/error.log”失败(13:权限被拒绝) 2012/05/10 16:07:13 [warn] 18214#0:“user”指令仅当主进程以超级用户权限运行时才有意义,在 /etc/nginx/nginx.conf:1 中被忽略 nginx:配置文件 /etc/nginx/nginx.conf 语法正常 2012/05/10 16:07:13 [emerg] 18214#0:open()“/var/run/nginx.pid”失败(13:权限被拒绝) nginx:配置文件 /etc/nginx/nginx.conf 测试失败
在/etc/nginx/sites-available/default中:
server {
listen 90;
root /usr/share/nginx/www;
index index.html index.htm;
access_log /var/log/nginx/top-secret-project.access.log;
server_name localhost;
location / {
try_files $uri $uri/ /index.html;
}
location /doc {
root /usr/share;
autoindex on;
allow 127.0.0.1;
deny all;
}
}
server {
listen 90;
listen my-url:90;
server_name my-url;
access_log /var/log/nginx/saba.access.log;
location /assets/ {
autoindex on;
alias /home/kkaisare/Workspaces/top_secret_project/client/web/assets/;
}
location /private_content_server/ {
alias /home/kkaisare/Workspaces/top_secret_project/store/content/private_content_server/;
autoindex on;
}
location /production_content_server/ {
alias /home/kkaisare/Workspaces/top_secret_project/store/content/production_content_server/;
autoindex on;
}
include /etc/nginx/fastcgi_php;
}
在/etc/nginx/fastcgi_php中:
location /useraccessauthorization/\.php$ {
fastcgi_pass unix:/var/run/php-fastcgi/php.sock;
fastcgi_param SCRIPT_FILENAME /home/kkaisare/Workspaces/top_secret_project/store/content/production_content_server/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
答案1
首先,您确实需要修复配置问题。如果您没有以 root 身份运行此程序,则不必尝试更改为其他用户。但是,如果您绑定到端口 90,那么您实际上需要以 root 身份启动,因此要么绑定到高于 1024 的端口,要么以 root 身份启动它,然后让 nginx 通过用户指令放弃特权。
其次是您的 pid 文件,由于您不是以 root 身份启动,因此您可能需要确保您的实际用户有权读取由 init 脚本创建的 pid 文件。在修复此问题之前,您无法动态重新加载配置。
最后,当上述问题解决后。然后从更改您的位置
location /useraccessauthorization/\.php$ {
到
location ~ ^/useraccessauthorization/.+\.php$ {
答案2
你的/etc/nginx/nginx.conf看起来像什么?从表面上看,您的错误是因为您没有以所有者或超级用户的身份重新加载 nginx。
仔细检查这些文件的权限,确认它们属于 nginx 用户(通常是 www/www),并且用户指令错误可以通过sudo /etc/init.d/nginx reload。