Nginx - proxy_pass - определенное местоположение, не работающее

Я пробую к маскированию удаленного 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;
    }
}
0
задан 7 October 2014 в 14:21
1 ответ

Почему вы перенаправляетесь на тот же самый 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;
    }
}
0
ответ дан 24 November 2019 в 09:01

Теги

Похожие вопросы