我有3个域名,我正在尝试使用Nginx在一台服务器(数字海洋液滴)上托管所有3个站点.
mysite1.name mysite2.name mysite3.name
其中只有一个有效.另外两个导致403错误(以相同的方式).
在我的nginx错误日志中,我看到:[error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden.
我的网站启用配置是:
server {
server_name www.mysite2.name;
return 301 $scheme://mysite2.name$request_uri;
}
server {
server_name mysite2.name;
root /usr/share/nginx/mysite2.name/live/;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.html index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Run Code Online (Sandbox Code Playgroud)
所有3个站点都有几乎相同的配置文件.
每个站点的文件都在/usr/share/nginx/mysite1.name/someFolder等文件夹中,然后/usr/share/nginx/mysite1.name/live是一个符号链接.(与mysite2和mysite3相同.)
我看过禁止所有文件的Nginx 403,但这没有用.
关于可能出错的任何想法?
只是想帮助别人.是的,你只想使用nginx提供静态文件,你在nginx.conf中得到了一切:
location /static {
autoindex on;
#root /root/downloads/boxes/;
alias /root/downloads/boxes/;
}
Run Code Online (Sandbox Code Playgroud)
但是,最后,你失败了.你从浏览器得到"403禁止"......
---------------------------------------- 下面的答案: ------ ----------------------------------
解决方案非常简单:
方法1:以用户身份运行nginx作为'/ root/downloads/boxes /'所有者
在nginx.conf中:
?user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
Run Code Online (Sandbox Code Playgroud)
是的,在第一行" #user noboy; "中,只需删除" # ",并在Linux/OS X中将" nobody " 更改为您自己的用户名,即更改为" root "进行测试.重启nginx.
注意,你最好不要以root身份运行nginx!这里只是为了测试,对黑客来说是危险的.
有关更多参考,请参阅nginx(引擎X) - BUM中的痛苦![13:许可被拒绝]
方式2:将'/ root/downloads/boxes /'所有者更改为'www-data'或'nobody'
在终端:
ps aux | grep nginx
Run Code Online (Sandbox Code Playgroud)
获取运行nginx的用户名.应该是'www-data'或'nobody'由nginx的版本决定.然后点击终端(例如使用'www-data'):
chown -R www-data:www-data /root/downloads/boxes/
Run Code Online (Sandbox Code Playgroud)
------------------------------ 一件更重要的事情是: …
我有Nginx设置并正确显示测试页面.如果我尝试更改根路径,即使所有权限都相同,我也会收到403 Forbidden错误.此外,nginx用户存在.
nginx.conf:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
index index.html index.htm;
server {
listen 80;
server_name localhost;
root /var/www/html; #changed from the default /usr/share/nginx/html
}
}
Run Code Online (Sandbox Code Playgroud)
namei -om /usr/share/nginx/html/index.html
f: /usr/share/nginx/html/index.html
dr-xr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html
Run Code Online (Sandbox Code Playgroud)
namei -om /var/www/html/index.html
f: /var/www/html/index.html
dr-xr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Nginx 和 php-fpm 配置我的网络服务器
,我之前在本地计算机和开发服务器中已成功配置,但现在在 AWS 中没有。
唯一的区别是我从生产服务器的源安装了 Nginx
它在我的 /var/log/nginx/error.log 中给出了这样的错误
2014/03/11 11:09:19 [error] 11138#0: *1 FastCGI sent in stderr: "Access to the script '/home/ambassador-portal/ambassador-api/web' has been denied (see security.limit_extensions)" while reading response header from upstream, client: 202.62.16.225, server: brandapi.whatiwear.com, request: "GET /app_dev.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "brandapi.whatiwear.com", referrer: "http://brandapi.whatiwear.com/"
Run Code Online (Sandbox Code Playgroud)
虽然 php-fpm 中的错误日志没有给出错误
这是我的 nginx.conf
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server { …Run Code Online (Sandbox Code Playgroud)