2012-12-09 23 views
11

Lokasyona göre proxypass yoluyla iki farklı arka uçta URL isteği için proxypass yapmak istiyorsanız en hızlı ve en temiz çözüm. Bu yapılandırma nginx geçişte "/ app1" veya vekil ve URL/komutu tanımıyor arka uca "/ app2" ile Nginx konum/geçiş için rewriten uri to proxy_pass

location /app1/ { 
    alias /var/www/ruby/public; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    try_files $uri $uri/ @ruby; 
} 

location @ruby { 
    proxy_pass http://127.0.0.1:3000; 
} 

location /app2/ { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    try_files $uri $uri/ @other; 
} 

location @other { 
    proxy_pass http://127.0.0.1:8080; 
} 

.. Örneğin olarak

http://127.0.0.1:3000 sadece /messages geçmek istiyorum http://<nginx>/app1/messages numaralarına erişirken, ancak yukarıdaki yapılandırmada'u http://127.0.0.1:3000/app1/messages olarak geçirebilirsiniz. Aynı /app2

cevap

8

"/" memba adının sonunda koyarak deneyin için de geçerli örn

proxy_pass http://127.0.0.1:8080/; 

bu yayını bakın: How to preserve request url with nginx proxy_pass

+4

Bu URI olamaz proxy_pass "' nedeniyle çalışmıyor Düzenli ifadeyle verilen konum bölümü ... "', bkz. http://stackoverflow.com/questions/21662940/proxy-pass-cannot-have-uri-part-in-location. – frhd