1. 程式人生 > >【Nginx】使用nginx反向代理IIS實現80埠的解放

【Nginx】使用nginx反向代理IIS實現80埠的解放

下載版本:

 

我使用了穩定版本。

下載完成之後進行目錄解壓,解壓之後大概就是這個樣子:

網上很多人寫這些了想了解概念的百度一下一搜一大把,所以就不嘮叨了。只是記錄一片windows中的使用,也是親身體驗,配置因為window可能有點坑所以記錄以便查閱很分享。

瞭解nginx的功能推薦:https://blog.csdn.net/csdn265/article/details/58693594

開啟服務

在當前目錄執行nginx,第一種可以直接點選exe檔案執行,第二種就是在當前目錄啟動shell命令列start nginx。

無論使用那種都是沒有成功視窗的,當時我因為一閃而過的現象糾結了一大會,老以為沒有成功,哈哈。所以我們可以去任務管理的程序下檢視是否開啟成功:

當然還有nginx告訴我們的成功資訊,可以去日誌資料夾下檢視是否生成nginx.pid檔案,此檔案代表生成的執行緒pid值:

最後在瀏覽器裡訪問127.0.0.1看到歡迎介面:

然後記錄下nginx的命令:

  • nginx -s stop:快速關機
  • nginx -s quit:退出
  • nginx -s reload:更改配置,使用新配置啟動新工作程序,正常關閉舊工作程序
  • nginx -s reopen:重新開啟日誌檔案

開啟不成功解決

在這裡有可能會不成功。出現問題我們就去解壓目錄下的logs資料夾下檢視錯誤日誌:

 

大概的意思就是80埠繫結失敗了,意思說白可能就是80埠被佔用了。

可通過以下程式碼檢視是否某個埠被佔用:

netstat -an | find "0.0.0.0:80"

 

然後在通過以下命令檢視佔用的pid:

netstat –ano

 

通過以上我們知道了pid=4的佔用了,然後我們開啟工作管理員=>詳細資訊:

 

發現被一個 NT Kernael &System 佔用。然後我就去查這個東西的資料。說是和IIS服務相關的。然後就是關閉這個服務。

命令列關閉:

使用如下命令關閉iis相關服務(管理員身份進入cmd)

net stop http

 

然後選擇Y。

 

然後繼續執行以下命令,記得執行命令後重啟電腦相當關鍵(可坑死我了)

sc config http start= disabled

 

若需要還原http服務使用以下命令即可(在管理員下):

sc config http start= demand & net start http

net start http

nginx設定代理

剛才我們已經成功開啟了nginx服務,那麼我們就可以使用它了,現在我用一個示例說明一下代理。畢竟我也是學習,可能這個配置也有說的不全以後在補充更詳細的,這裡只做一個簡單的使用。

我們的示例總體效果是這樣的,假如我們有一個網站可以掛在80埠下然後直接訪問127.0.0.1這樣就可以了,我們現在做到掛到其他埠下還可以這樣訪問到。

有些人會產生疑問,為什麼要這樣?其實很簡單因為我又有了第二個網站我還想這樣訪問怎麼辦,所以我們分別把網站掛在801,802下然後nginx根據不同的訪問域名代理到個字埠下。

我在這裡已經有了一個弄好的網站,已經掛在了8080埠,

訪問一下,這裡如果你是本機就是127.0.0.1跟上面說的不衝突,因為我是這阿里雲伺服器下分配到的內網ip就是這個就當127.0.0.1來看就好了。

現在我們有了一個掛到8080埠下的網站,然後我們使用nginx進行80埠的反向代理配置:

首先找到nginx的檔案目錄:nginx根目錄/conf/nginx.comfig檔案

 開啟檔案找到HTTP節點下的server節點,配置listen 為80,server_name  為域名或者ip+埠如果是本機也可以填寫localhost,

因為我又域名所以我填寫了域名,但是這裡我為了給大家說明白還是改成了ip:172.16.104.184。

然後在配置location 節點配置轉發地址:http://172.16.104.184:8080;

然後大致的nginx.config檔案內容如下:

配置好了以後開啟命令列輸入:nginx -s reload 重新載入配置檔案即可生效。

然後看我在瀏覽器輸入:172.16.104.184不需要輸入8080埠即可訪問剛才的專案: