Nginx reverse proxy and subdomains
Привет,
Наскоро ми се наложи да търся решение за използване на Nginx като reverse proxy със субдомейни.
Идеята беше следната :
Имаме сайт : testsait.com
който се намира на един сървър с nginx и wordpress блог на адрес : blog.testsait.com
който се намира на друг сървър.
Целта е да направим testsait.com/blog
да се отваря директно през blog.testsait.com
.
Всичко това е с цел по-добро SEO, или поне нашите SEO гурута смятат така 😀 хаха.
Ето и начина по който се прави това:
Във виртуалният хост на сайта ни testsait.com
се добавя следното :
location /blog/ { rewrite ^/blog/(.*) /$1 break; 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; proxy_read_timeout 90; proxy_pass http://blog.testsait.com/; proxy_redirect http://blog.testsait.com/ /blog/; }
Този блок се добавя преди: location /
Така направено всичко ще работи, освен wp-login.php
. Причината е заради location ~ \.php$ {
За това този location
блок се заменя със следния :
location ~* ^((?!\/blog)(.+)\.php)$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_max_temp_file_size 0; client_max_body_size 32M; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_read_timeout 240; #add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive"; fastcgi_param SCRIPT_FILENAME /var/www/testsait.com/$fastcgi_script_name; }
Така всички php заявки ще бъват насочени към php-fpm socket-а освен /blog/.
Резултата е работещ testsait.com/blog
и testsait.com/blog/wp-login.php
.
Това е!