簡體   English   中英

nginx反向代理“顯示IP地址”

[英]nginx reverse proxy “ip address shows”

我有nginx在服務器上為example.com網站提供服務。 同一台服務器正在運行安裝http://server_ip:8080/app webapp(這是Spring MVC webapp,由Spring Security保護)的tomcat安裝。

我希望能夠使用http://app.example.com地址訪問tomcat Webapp。 我所做的是將nginx配置為反向代理,如下所示(在app.example.com配置文件中, sites-enabled ):

server {
  listen          80;
  server_name     app.example.com;
  root            /var/lib/tomcat7/webapps/app;


  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://server_ip:8080/;
  }
}

其中server_ip是我的服務器的IPv4地址。

另外,在/etc/tomcat7/server.xml文件中,我添加了:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="app">
         <WatchedResource>WEB-INF/web.xml</WatchedResource>
     </Context>
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

因此,默認情況下,當我訪問http://server_ip:8080時,tomcat會將我發送到app webapp(無論如何, app webapp都是唯一的服務)。

現在,如果我訪問http://app.example.com ,則將獲得該app webapp的登錄頁面。 但是,登錄后,瀏覽器的URL字段顯示的是http://server_ip:8080而不是http://app.example.com ,正如我期望的那樣。

有人暗示這是什么原因嗎? 我在網上找到的所有指南似乎都建議一種類似我所擁有的配置。 我希望有人可以確認配置是否正確,因為這可能指向服務器配置以外的原因(可能與登錄后Spring Security重定向的方式有關)。

謝謝。

你錯過了

proxy_set_header Host $host;

實際上,我沒有任何理由擁有X-Forwarded-HostX-Forwarded-Server標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM