Я пытаюсь замаскировать удаленный 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 $
Я создал второй домен t.saas.localhost и он работает как ожидалось
В t.saas.localhost домен работает отлично.
t.saas.localhost / uk_staging показывает staging.saas.localhost / _ t.saas.localhost / something_else показывает google.co.uk/
Это моя текущая конфигурация Nginx:
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;
}
}
Почему вы перенаправляетесь на тот же хостинг с proxy_pass
директива ?!
Кроме того, nginx выбирает подходящее местоположение способом, которого вы, вероятно, не ожидали. Прочитайте это : Nginx rewite rules 403 ошибка.
Лучше не использовать 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;
}
}