Я пробую к маскированию удаленного URL с Nginx с помощью proxy_pass
Я хотел бы загрузить staging.saas.localhost/_, когда URL браузера является saas.localhost/uk_staging.
По некоторым причинам местоположение в saas.localhost не работает, и для того, чтобы не работать я подразумеваю, что местоположение, кажется, проигнорировано.
saas.localhost/uk_staging обрабатывается приложением а не от staging.saas.localhost / _, мне кажется, что даже для saas.localhost/uk_staging используемое местоположение является местоположением ~ .php$
Я создал 2-й домен t.saas.localhost, и он работает как ожидалось
t.saas.localhost домен работает превосходный.
t.saas.localhost/uk_staging отображается, staging.saas.localhost/_ t.saas.localhost/anything_else отображает google.co.uk/
Это - мой текущий Nginx conf:
server {
listen 80;
server_name saas.localhost www.saas.localhost staging.saas.localhost;
root /codebase/saas;
index index.php index.html index.htm;
location /uk_staging {
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://staging.saas.localhost/_;
}
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?action=$1 last;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 600;
}
}
server {
listen 80;
server_name t.saas.localhost;
root /codebase/saas;
index index.php index.html index.htm;
location /uk_staging {
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://staging.saas.localhost/_;
}
location / {
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://google.co.uk;
}
}
Почему вы перенаправляетесь на тот же самый vhost с помощью директивы proxy_pass
?!
Также nginx выбирает подходящее место так, как вы, вероятно, не ожидаете. Прочтите это : Nginx rewite rule 403 error.
Лучше не использовать if
, когда этого можно избежать.
server {
listen 80;
server_name saas.localhost www.saas.localhost staging.saas.localhost;
root /codebase/saas;
index index.php index.html index.htm;
location ^~ /uk_staging {
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://staging.saas.localhost/_; # What are you doing here ??!!
}
#avoid rewrite for static content
location ~* \.(js|jpg|png|css|htm|html|gif|txt|swf|mpg|mp4|avi)$ {
expires 30d;
}
location / {
rewrite ^(.*)$ /index.php?action=$1 last;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 600;
}
}