2016-11-14 58 views
3

我已經嘗試了許多方法,但不知道如何在example.com和的WordPress上example.com/blog如何在使用相同域的NGINX服務器上運行django和wordpress?

下運行項目的目錄結構Django和WordPress的運行Django的。

Django應用程序目錄 - /主頁/ Ubuntu的/ Django的

Django應用程序上成功運行 - example.com:8000

WordPress的DIR - 在/ var/www/html等/博客

的WordPress上成功運行 - example.com

Nginx的配置

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

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

    server_name example.com; 

    location/{ 
      # try_files $uri $uri/ =404; 
      try_files $uri $uri/ /index.php?q=$uri&$args; 
    } 

    error_page 404 /404.html; 

    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
      root /usr/share/nginx/html; 
    } 

    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
    } 
} 

注意 - Django應用程序的運行gunicorn,我知道子域可能是解決辦法,但我不希望這樣。

如何寫nginx的配置都Wordpress和Django的運行在example.com Django應用程序和example.com/blog WordPress的

+0

嘗試子域名'wordpress.example.com','blog.example。com' - 在一個文件中'server_name wordpress.example.com;'和在其他'server_name blog.example.com;' – furas

+0

您需要位置/博客爲PHP? – furas

+0

我的配置爲在本地主機上運行的Gun​​icorn:3001 - 您必須更改端口(和「server_name」)。 http://pastebin.com/4cc2vEKj – furas

回答

3

感謝alex這個問題。

下面是解

Django應用程序目錄 - /主頁/ Ubuntu的/ Django的

WordPress的DIR - 在/ var/www/html等/博客

NGINX的conf文件

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 
    server_name example.com; 

    location/{ 
      proxy_pass http://127.0.0.1:8000; 
      proxy_redirect off; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For   

      $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Proto $scheme; 
    } 

    location ~ /blog/.*\.php$ { 
      root /var/www/html; 
      index index.php index.html index.htm; 
      set $php_root /var/www/html/blog; 

      try_files $uri =404; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
    } 

    location /blog { 
      root /var/www/html; 
      index index.php index.html index.htm; 
      set $php_root /var/www/html/blog; 

      try_files $uri $uri/ /blog/index.php; 
    } 

location /static/ { 
      alias /home/ubuntu/django/your_app_name/static/static_root/; 
    } 

    location /media/ { 
     alias /home/ubuntu/django/your_app_name/media/ ; 
    } 

} 

注 -http://example.com/blog在WordPress的

WP-位置表現在你的Django應用程序在example.com

運行現在你的Blog上example.com/blog

運行更換您的家庭和SITEURL
1

據我所知你有一臺服務器運行你的Django站點和一個運行你的WordPress站點。如果是這樣,你可以做這樣的事情:

{ 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 
    server_name example.com; 

    access_log /var/log/nginx/example-access.log; 

    location/{ 
     proxy_pass   http://127.0.0.1:3001; 
     proxy_redirect  off; 

     proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto $scheme; 
    } 

    location /blog/ { 
     proxy_pass   http://127.0.0.1:(wordpress port); 
     proxy_redirect  off; 

     proxy_set_header Host    $host; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto $scheme; 
    } 
} 

如果需要服務器從PHP博客ngix中間使用沒有阿帕奇somethon想:幫我解決

location ~ /blog/.*\.php$ { 
    root /var/www/html/blog; 
    index index.php index.html index.htm; 
    set $php_root /var/www/html/blog; 

    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 
    include /etc/nginx/fastcgi_params; 
} 
+0

如果我使用'proxy_pass http://127.0.0.1:8000;'爲django和'proxy_pass http://127.0.0.1;'爲wordpress然後example.com打開Django,但示例.com/blog /說django方面沒有找到頁面錯誤? – Mukesh

+0

對不起example.com/blog/說502錯誤的網關,我認爲它不是服務的PHP文件 – Mukesh

+0

502錯誤的網關意味着後代理服務器沒有響應,你是在Apache上運行你的博客? – alex

相關問題