如何配置nginx来运行Wordpress和Django

时间:2017-03-31 02:38:54

标签: django wordpress nginx

我看了几个类似的问题,但他们似乎没有任何帮助。我在默认的1点击配置中运行了一个运行Wordpress的vultr.com实例。 Centos6如果重要的话。这是(我希望它保留)在根(www.mysite.com)中。我想让我的Django应用程序在www.mysite.com/crossfaded/中运行。我不想要当前服务器的任何停机时间,因此还没有与服务器关联的域名。我试图只使用IP来做到这一点。

Wordpress网站运行正常。

我一直在关注指南here,然后尝试了this one,但当我在浏览器中导航到http://ip.add.re.ss/crossfaded/media/apple.jpg时,我从nginx获得了404。 Going /crossfaded/media/给了我一个来自nginx的403,而/crossfaded/invalidpath/给了我一个由Wordpress提供的404,所以路由发生了一些事情。我做了chmod 777 apple.jpg,因为这是一个权限问题,但是没有做任何事情。

我有预感我的location块的语法混乱,但我真的不确定。

wordpress_http.conf

upstream php-handler-http {
        server 127.0.0.1:9000;
        #server unix:/var/run/php5-fpm.sock;
}

server {
        listen 80 default_server;
        server_name _;
        #server_name wordpress.example.com;

        root /var/www/html/;
        index index.php;

        # set max upload size
        client_max_body_size 2G;
        fastcgi_buffers 64 4K;

        access_log /var/log/nginx/wordpress_http_access.log combined;
        error_log /var/log/nginx/wordpress_http_error.log;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
                try_files $uri $uri/ /index.php?$args ;
        }

        location ^~ /wp-admin/ {
                auth_basic "Restricted";
                auth_basic_user_file /etc/nginx/htpasswd/wpadmin;

                location ~* \.(htaccess|htpasswd) {
                        deny all;
                }

                location ~ \.php(?:$|/) {
                        fastcgi_split_path_info ^(.+\.php)(/.+)$;
                        include fastcgi_params;
                        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        fastcgi_param PATH_INFO $fastcgi_path_info;
                        fastcgi_pass php-handler-http;
                        fastcgi_read_timeout 60s;
                }
        }

        location ~* \.(htaccess|htpasswd) {
                deny all;
        }

        location ~ \.php(?:$|/) {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_pass php-handler-http;
                fastcgi_read_timeout 60s;
        }

        # set long EXPIRES header on static assets
        location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                access_log off;
        }

location ~ /crossfaded/static/ {
            alias /root/crossfaded/static/;
    }

    location ~ /crossfaded/media/ {
        alias /root/crossfaded/media/ ;
    }
}

1 个答案:

答案 0 :(得分:0)

有两个问题:

  1. 我需要在别名位置使用插入符号(^),所以:

    location ^~ /crossfaded/static/ {
                alias /root/crossfaded/static/;
            }
    
    location ^~ /crossfaded/media/ {
            alias /root/crossfaded/media/ ;
          }
    
    1. 服务器默认~//root/。 Nginx需要r-x对从/到相关文件的所有目录的权限。它没有那个。将项目目录移至/home/