尽管 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 日志(-taccesserror)。前两个日志输出没有错误,但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 应用程序入口被禁止的主要内容,如果未能解决你的问题,请参考以下文章

锁定电脑后重登录,出现“引用账户当前已锁定,且可能无法登录”提示。是怎么回事?

文件或目录已损坏且无法读取。请运行chkdsk工具

尽管源和依赖关系已过期,但 Meson custom_target 永远不会执行

帝国cms插件 一键替换数据表中已发表文章的内容关键字

wordpress利用rsync同步备份

Android Studio 说“ADB.exe 已过时并且存在严重的性能问题”尽管 SDK 工具说一切都是最新的