2015-09-13 2 views
4

я хочу использовать Nginx расположение прокси мои приложенияNginx прокси и удалить proxy_pass префикс

nginx(ip address) : 10.255.1.10 
php(10.255.1.20) 

Ip доступ:

10.255.1.20/   "access ok(200)" 
10.255.1.20/api  "access ok(200)" 
10.255.1.20/project "access ok(200)" 

но я использую Nginx прокси доступа 404

example.com/work  "access ok(200)" 
example.com/work/api "access not found(404)" 
example.com/work/project "access not found(404)" 

Nginx ConfigFile :

server { 
    listen 80; 
    server_name example.com; 

    location /work/ { 
     proxy_pass    http://10.255.8.77:8065/; 
     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_set_header  HOST $host/work; 
     proxy_read_timeout  90; 
    } 
    } 

я хочу это:

"curl http://example.com/work   200" 
"curl http://example.com/work/api  200" 
"curl http://example.com/work/project 200" 

спасибо всем.

ответ

5

косая черта делает это волшебство, выньте его из proxy_pass, и это должно помочь:

server { 
    listen 80; 
    server_name example.com; 

    location /work/ { 
     proxy_pass    http://10.255.8.77:8065; 
     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_set_header  HOST $host/work; 
     proxy_read_timeout  90; 
    } 
    } 

Давайте посмотрим через документы:

на просьбу URI передается на сервер следующим образом :

Если директива proxy_pass указана с помощью URI, тогда, когда на сервер передается запрос , часть нормализованного запроса URI matchin г местоположение заменяется на URI, указанный в директиве:

location /name/ { 
    proxy_pass http://127.0.0.1/remote/; 
} 

Если proxy_pass указан без URI, запрос URI передается на сервер в том же форме, отправленного клиентом, когда первоначальный запрос обрабатывается или полного нормированный запрос передается URI, будет при обработке измененного URI:

location /some/path/ { 
    proxy_pass http://127.0.0.1; 
} 
+0

@anatoly Thanx для краткого, легко читаемого и хорошо документированного ответа :) –

Смежные вопросы