尽管 DB 和 CMS 已同步且 DR 目录权限已设置,但 Nginx 应用程序入口被禁止
Posted
技术标签:
【中文标题】尽管 DB 和 CMS 已同步且 DR 目录权限已设置,但 Nginx 应用程序入口被禁止【英文标题】:Nginx app entrence forbidden although DB and CMS synced and DR dir permissions set 【发布时间】:2018-08-14 04:39:39 【问题描述】:在带有 Bash 的 Ubuntu 16.04 上,我已经建立了 LEMP,尽管数据库数据符合(我记得),但我无法从浏览器访问 WordPress 应用程序,并且文档根应用程序目录具有正确的权限(见下文)。
nginx 配置
nginx.conf(全部默认)。 nginx default(全部默认)。 Nginx app conf(前七行是我的 - 其余的是 Certbot)。WordPress 应用程序 wp-config.php
这是我在wp-config.php
中唯一更改的部分:
define('DB_NAME', 'example.com');
define('DB_USER', 'example.com');
define('DB_PASSWORD', 'example.password');
测试前我的重置
chown -R www-data:www-data /var/www/html/
chmod -R a-x,a=rX,u+w /var/www/html/
systemctl restart nginx.service
/etc/init.d/php*-fpm restart
Nginx 日志
我检查了所有三个 Nginx 日志(-t
、access
和 error
)。前两个日志输出没有错误,但error
输出如下:
directory index of "/var/www/html/example.com/" is forbidden
我的问题
鉴于以上数据,为什么禁止进入?我想念什么?
注意事项:
-
此问题是 WordPress 应用程序独有的。非 HTTPS、PHPmyadmin 应用程序不会发生这种情况。
WordPress 应用程序的数据库用户和数据库名称彼此相同,也与应用程序的目录名称相同。
【问题讨论】:
你的 nginx 错误日志中有什么有用的吗? (位于/var/log/nginx/error.log
)
@IsThisjavascript 我已经更新了问题。
【参考方案1】:
Nginxapp.conf 的服务器根目录应该是:
root /var/www/html;
不是:
root /var/www/html/example.com/;
顺便说一句,这个设置已经在 Nginx 虚拟机default.conf 中定义了,在app conf文件中重新定义它有点多余。
更新
由于您在将根更改为root /var/www/html;
后无法正常工作的评论,我进一步检查了您的设置,并注意到您没有用于处理根目录的位置指令,请尝试在您的virtual host setting 中更改此行来自:
try_files $uri $uri/ =404;
到:
location /
try_files $uri $uri/ /index.php?$args;
【讨论】:
遗憾的是这个改动没有帮助:改动后仍然禁止进入。certbot --nginx -d "$domain" -d www."$domain"
我更新了我的帖子,请查看我关于location /
设置的更新。
请看我的回答,亲爱的hcheung。
很高兴看到它现在正在工作。我认为参数 /index.php?args;
或 /index.php?q=$uri&$args;
取决于您在 WordPress 上的永久链接设置。【参考方案2】:
我能够用这个 conf 解决它:
server
root /var/www/html/judith-law.co.il;
server_name judith-law.co.il www.judith-law.co.il;
index index.php index.html index.htm;
location /
try_files $uri $uri/ /index.php?q=$uri&$args;
location ~ \.php$
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$
expires 365d;
# managed by Certbot
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
server
if ($host = www.example.com)
return 301 https://$host$request_uri;
# managed by Certbot
if ($host = example.com)
return 301 https://$host$request_uri;
# managed by Certbot
listen 80;
return 404; # managed by Certbot
【讨论】:
以上是关于尽管 DB 和 CMS 已同步且 DR 目录权限已设置,但 Nginx 应用程序入口被禁止的主要内容,如果未能解决你的问题,请参考以下文章
锁定电脑后重登录,出现“引用账户当前已锁定,且可能无法登录”提示。是怎么回事?