How to run django and wordpress on NGINX server using same domain?
Thanks alex for helping me out to solve this problem.
Here is the solution
Django app dir- /home/ubuntu/django
Wordpress dir - /var/www/html/blog
NGINX Conf file
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/ ; }}
Note- please replace your home and siteurl with http://example.com/blog in wp-location table of wordpress
Now Your Django app running on example.com
Now Your Blog running on example.com/blog
As i understand you have a server running your django site and one running your wordpress site. if so you can do something like this:
{ 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; }}
if you need to server the php blog from ngix no apache in the middle use somethon like:
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;}
Just add these lines to your config file.
location ~ /blog/.*\.php$ { root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;}location /blog { root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; try_files $uri $uri/ /blog/index.php;}