Django + Plesk + Apache - 在某些 url 上禁止 403 但 404 的显示应用程序正在运行...?

Posted

技术标签:

【中文标题】Django + Plesk + Apache - 在某些 url 上禁止 403 但 404 的显示应用程序正在运行...?【英文标题】:Django + Plesk + Apache - Forbidden 403 on certain urls but 404's show application is running...? 【发布时间】:2019-03-09 02:03:58 【问题描述】:

免责声明:这很可能是重复的答案。但是,我对此非常尝试,沮丧和迷失。很高兴有人指出我正确的方向! :)

问题

使用 Plesk Onyx,我正在尝试通过 Apache 部署我的 Django 应用程序。

我在某些 url 上看到 Forbidden 403,但在其他会抛出 404 的 URL 上看到 404。因此,Django 应用程序正在“工作” - 但在某处我的权限已经碰壁了...

所以 - 导航到 https://api.winduplordvexxos.com/admin/ 或 https://api.winduplordvexxos.com 会遇到一堵完整的 403 砖墙。

但是,当导航到任何 404 时,我会看到 Django 404 url​​ 查找错误页面:

这是进步 - wsgi 进程在某处工作。

我的 http 和 https 指令如下,以及空白的 nginx 指令:

上述配置适用于手动部署到未安装 nginx 的服务器...

看到这个页面给了我很大的希望! :D 我快到了……

注意:已安装 mod_wsgi。我正在运行 Ubuntu 16.04。我的服务器安装了 Plesk Onyx。 Nginx 正在挡路,等等

那么,我的理论解决方案可能涉及到 nginx?关掉它? :D

或者也许允许它与 Apache 一起工作...?

更新:如果有用,这里是我的域 nginx 配置文件:

#ATTENTION!
#
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.

server 
        listen 104.248.238.218:443 ssl http2;

        server_name api.winduplordvexxos.com;
        server_name www.api.winduplordvexxos.com;
        server_name ipv4.api.winduplordvexxos.com;

        ssl_certificate             /opt/psa/var/certificates/scfmLBLuq;
        ssl_certificate_key         /opt/psa/var/certificates/scfmLBLuq;
        ssl_client_certificate      /opt/psa/var/certificates/scfFzGCFF;

        client_max_body_size 128m;

        root "/var/www/vhosts/winduplordvexxos.com/api.winduplordvexxos.com/public";
        access_log "/var/www/vhosts/system/api.winduplordvexxos.com/logs/proxy_access_ssl_log";
        error_log "/var/www/vhosts/system/api.winduplordvexxos.com/logs/proxy_error_log";

        #extension letsencrypt begin
        location /.well-known/acme-challenge/ 
                root /var/www/vhosts/default/htdocs;

                types  
                default_type text/plain;

                satisfy any;
                auth_basic off;
                allow all;

                location ~ ^/\.well-known/acme-challenge.*/\. 
                        deny all;
                
        
        #extension letsencrypt end

        location / 
                proxy_pass https://104.248.238.218:7081;
                proxy_set_header Host             $host;
                proxy_set_header X-Real-IP        $remote_addr;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
                access_log off;

        

        location ~ ^/(plesk-stat|awstats-icon|webstat|webstat-ssl|ftpstat|anon_ftpstat) 
                proxy_pass https://104.248.238.218:7081;
                proxy_set_header Host             $host;
                proxy_set_header X-Real-IP        $remote_addr;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
                access_log off;

        

        location ~ ^/~(.+?)(/.*?\.php)(/.*)?$ 
                alias /var/www/vhosts/winduplordvexxos.com/web_users/$1/$2;
                fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_pass "unix:///var/www/vhosts/system/api.winduplordvexxos.com/php-fpm.sock";
                include /etc/nginx/fastcgi.conf;

        

        location ~ ^/~(.+?)(/.*)?$ 
                proxy_pass https://104.248.238.218:7081;
                proxy_set_header Host             $host;
                proxy_set_header X-Real-IP        $remote_addr;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
                access_log off;

        

        location ~ \.php(/.*)?$ 
                fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_pass "unix:///var/www/vhosts/system/api.winduplordvexxos.com/php-fpm.sock";
                include /etc/nginx/fastcgi.conf;

        

        location ~ /$ 
                index "index.html" "index.cgi" "index.pl" "index.php" "index.xhtml" "index.htm" "index.shtml";
        

        add_header X-Powered-By PleskLin;

        include "/var/www/vhosts/system/api.winduplordvexxos.com/conf/vhost_nginx.conf";


server 
        listen 104.248.238.218:80;

        server_name api.winduplordvexxos.com;
        server_name www.api.winduplordvexxos.com;
        server_name ipv4.api.winduplordvexxos.com;

        client_max_body_size 128m;

        return 301 https://$host$request_uri;

【问题讨论】:

你能分享你的 django 视图吗? @grrrrrr 我会,但我目前没有任何 Django 视图用于此应用程序 - 只是使用目前的默认应用程序在 Plesk 中启动和运行。 【参考方案1】:

在 Plesk Onyx 中,我需要导航到以下内容:

转到“工具和设置”,然后转到“服务管理”

在“服务管理”下找到“反向代理服务器 (nginx)”

找到后,只需停止“反向代理服务器 (nginx)”服务即可。

只要你知道怎么做就很简单! (完全的运气/机会/绝望!)

【讨论】:

以上是关于Django + Plesk + Apache - 在某些 url 上禁止 403 但 404 的显示应用程序正在运行...?的主要内容,如果未能解决你的问题,请参考以下文章

在Plesk中为域重新加载Apache配置

Plesk:通过 vhost_ssl.conf 覆盖 httpd.conf SSLCertificateFile?

在 Plesk 中运行 Laravel 5.1 任务计划程序

Plesk:访问外部公共文件夹

TYPO3、Plesk 和权限

Plesk:如何将域端口 80 和 443 重定向到我的 Docker 容器?