我正在一个新的 EC2 实例上设置我的博客,因为当前托管它的服务器上的一个站点正在被 DDoS 入侵。我在使用 nginx 时遇到了一些麻烦,因为我可以看到所有页面都很好,但在索引上是 403,或者可以看到索引但在页面上是 404(取决于我使用的配置)
这是我的nginx配置:
server {
listen 80;
server_name www.test.com;
server_name test.com;
root /www/blog;
include conf.d/wordpress/simple.conf;
}
和简单:
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
如果我更改try_files $uri $uri/ /index.php?$ args为了索引index.php,首页将工作良好,其余的将是404。如果我就这么放着,头版是403。
以下是错误日志:
2013/08/07 19:19:41 [error] 25333#0: *1 directory index of "/www/blog/" is forbidden, client: 64.129.X.X, server: test.com, request: "GET / HTTP/1.1", host: "www.test.com"
该目录在nginx用户上是755:
drwxr-xr-x 6 nginx nginx 4096 Aug 7 18:42 blog
有什么明显的我做错了吗?
希望如此,谢谢你!
添加<代码>索引index.php;在服务器块中,如果它不起作用,那么您需要删除< code>$uri/,因为您不想在上执行< code >自动索引
/
的目录(通过添加根目录,它将=/www/blog//code>),此检查将成功,因此它尝试列出文件夹的内容
$uri/
测试或未通过测试,因为您可能没有名为image.jpg
或stylesheet.css
等的文件夹
看起来我需要在服务器{}定义中而不是在位置{}中插入index.php
您似乎不允许将参数发送到CMS,因此这不会显示此uris,它会从数据库中获取信息并将您重定向到403页面。