[英]Simple reverse proxy with Nginx (equivalent to Apache)
使用Apache,我可以使反向代理與此VirtualHost配置一起使用。 我已經執行了nanoc view -p 8080
以將8080端口用於nanoc Web應用程序。
通過此設置, http://scalatra.prosseek
映射到了nanoc。
<VirtualHost *:80>
ProxyPreserveHost On
ServerName scalatra.prosseek
ProxyPass /excluded !
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
我需要使用Nginx進行相同的設置,並且要經過一些嘗試和錯誤,才能使其在此配置下正常工作。
upstream aha { # ??? (1)
server 127.0.0.1:8080;
keepalive 8;
}
# the nginx server instance
server {
listen 0.0.0.0:80;
server_name scalatra.prosseek;
access_log /usr/local/etc/nginx/logs/error_prosseek.log;
location / {
# ??? (2)
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_set_header X-NginX-Proxy true;
proxy_pass http://aha/; # ??? (1)
proxy_redirect off; # ??? (3)
}
}
它可以工作,但是我不確定這是否是最佳設置。 我的問題來了:
http://scalatra.prosseek
到localhost:8080的安裝是否可以:
proxy_redirect off;
? 您的配置看起來很接近。
代理頭應該沒問題。 通常,Nginx會傳遞標頭,因此當您要修改標頭時,將使用proxy_set_header -例如,即使客戶端不提供,也強制顯示Host標頭。
對於proxy_pass和上游,是的,名稱需要匹配。
考慮啟用proxy_redirect(默認)。 此選項修改Nginx是否干擾包括端口號在內的301和302重定向之類的響應。 關閉它意味着您的upsteam應用程序必須負責在任何重定向響應中傳遞正確的公共域名和端口。 將其保留為默認值意味着如果您不小心嘗試將客戶端定向到端口8080,則在某些情況下Nginx會將其更正為端口80。
您還沒有在nginx配置中包含/ excluded路徑。 加上
location /excluded {
return 403;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.