天天看點

Windows下Nginx+Tomcat配置通過域名通路本地項目

最終目的是在阿裡雲伺服器上,通過Nginx+Tomcat的配置,在位址欄輸入域名通路到項目。但在阿裡雲伺服器上配置之前,先在本機進行了配置驗證測試,以下是Windows下本機的驗證測試過程。

1. 安裝tomcat

安裝成功後,啟動tomcat,通路localhost:8080,能夠進入到tomcat首頁面。

2. 安裝Nginx 

安裝成功後,輕按兩下nginx.exe檔案,運作nginx。輕按兩下後可在任務管理器中看到兩個運作中的nginx.exe程序。通路127.0.0.1或localhost會看到Nginx歡迎界面。

3. Tomcat和Nginx整合

在nginx的配置檔案nginx.conf中,修改如下配置,配置修改完成後,重新加載nginx配置檔案,通路localhost頁面變為tomcat歡迎界面。

 server {

        listen       80;

#server_name指定要綁定的IP或域名

        server_name  localhost;

        location / {

            index  index.html index.htm;

#指定代理伺服器,也就是要将請求轉發到哪個伺服器處理,此處是将請求轉發到端口為8080的tomcat

   proxy_pass http://localhost:8080;

        }

......

......

其他配置

......

......

}

4. 将本機IP解析為域名(此處說“解析”不準确,大概意思就是生成本機IP對應的一個或多個域名)

按住WIN+R鍵,輸入C:\Windows\System32\drivers\etc,回車後打開hosts檔案,添加配置如下(結尾沒有分号)

 192.168.0.164 test.cdmtn.com

192.168.0.164 test.newProject.com

192.168.0.164為本機IP位址,test.cdmtn.com為域名。域名可自行定義,此處我添加兩條域名,因為本機需要驗證測試的是,通路兩個不同域名可以通路到不同項目。需要注意的一點是:IP位址可能會變,這點需要注意一下。

5. 配置Nginx.conf

server

    {

        listen 80;#Nginx監聽的端口

        server_name test.cdmtn.com;#域名或IP

        index index.html index.htm index.jsp;

        location / {

                proxy_pass http://localhost:8080/; #代理伺服器,此處代理到本機的tomcat

                proxy_set_header Host $http_host;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

    }

    server

    {

        listen 80;

        server_name test.newProject.com;#域名

        index index.html index.htm index.jsp;

        location / {

                proxy_pass http://localhost:8080/; #代理伺服器,此處代理到本機的tomcat

                proxy_set_header Host $http_host;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

    }

6. 配置server.conf

在tomcat配置檔案server.xml中,删除原有的Host的配置,在<Engine>.........</Engine>節點中添加如下兩段配置。Host标簽中的name為域名,與nginx.conf中指定的域名一緻。appBase指定項目存放的路徑,此處寫的路徑的起始位置是從webapps開始的,因為我存放項目檔案的地方是一個與webapps同級的檔案夾c,是以此處appBase指定為c,c檔案夾用來放第一個項目的war包。docBase是項目的名稱,因為我在appBase指定的目錄下存放的是項目war包,是以此處為cdmtn.war。第二個Host的配置與第一個類似,需要修改的地方有三處,Host節點的name為對應的域名,appBase為項目存放的路徑,docBase為項目檔案。因為配置的不加項目名,直接通過域名域名通路項目,是以此處的path為預設,不做多餘配置。

<Host name="test.cdmtn.com" appBase="c" deployOnStartup ="false" autoDeploy="false" unpackWARs="true">

                 <Context path="/"  docBase="cdmtn.war" />    

                 <Valve   className="org.apache.catalina.valves.AccessLogValve"   

                 directory="logs"     prefix="catalina."   suffix=".log"   

                 pattern="common"   resolveHosts="false"/>

    </Host>

<Host name="test.newProject.com" appBase="new" deployOnStartup ="false" autoDeploy="false" unpackWARs="true">

                 <Context path="/"  docBase="newProject.war" />  

                 <Valve   className="org.apache.catalina.valves.AccessLogValve"   

                 directory="logs"     prefix="catalina."   suffix=".log"   

                 pattern="common"   resolveHosts="false"/>

</Host>

配置完成後,重新開機tomcat和Nginx,通路test.cdmtn.com出現cdmtn這個項目的通路頁面,通路test.newProject.com出現newProject這個項目的通路頁面。

最後一點:該配置可以在本機通過域名通路項目,但在同一區域網路内,通路報462,初步考慮可能與Nginx的跨域通路有關,有待驗證,有知道的大神請指教。

繼續閱讀