Привет,
Наскоро ми се наложи да търся решение за използване на 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
.
Това е!