最近,剛開發完兩個項目,由于現階段預測訪問量不是很大,因此就把這兩個項目打算部署到同一臺服務器上面,這個時候就會面臨一個問題,大家都知道http協議默認端口是80,因此咱們再訪問網站的時候才無需輸入“域名 + 端口”的形式,只需要輸入域名就可以了(像這樣http://www.wyunfei.com/),但是80端口只有一個,但是兩個站點那是不是得有一個站點在用戶訪問的時候得以“域名 + 端口”的形式呢?NO!!!我們當然要讓用戶優雅進行訪問,那該怎么辦呢?
問題一,如果你兩個項目都要部署在IIS下面
第一個項目 http://www.wyunfei.com
-
網站 -> 右鍵 -> 添加網站(如下圖)
IIS添加網站 -
在如下中依次填寫上:網站名稱、物理路徑(項目路徑)、綁定(默認就行)、主機名(域名)
IIS添加網站配置
通過綁定的主機名http://www.wyunfei.com訪問試試可不可以,不可以聯系我,見下面二維碼,哈哈哈
第二個項目 http://m.wyunfei.com/
和上面操作步驟一樣,唯一差別就是“主機名”換一下,換成你的子域名或其它域名,只要指向這臺服務器就可以,注意端口都可以使用“80”,因為是通過主機名進行區分的,訪問http://m.wyunfei.com/試試吧,有問題找我事兒...
問題二,如果一個項目是node服務器,另一個放在IIS服務器
第一個項目IIS
按照“問題一”的方式進行配置就可以了,唯一修改的地方就是可以把端口改為非80,比如我改為了8081,這個時候要想成功訪問,那么我們需要這么寫域名 + 端口(http://www/wyunfei.com:8081/),才能夠正常訪問,但是顯然不是我們想要的結果。
咱們來屢屢思路:
我們要讓用戶訪問的是http://www.wyunfei.com/,但是顯然通過http://www.wyunfei.com/,無法定位到咱們的項目程序,還需要添加端口才能準確定位到具體的項目,這個時候咱們可不可以這么考慮,我讓用戶依舊訪問http://www.wyunfei.com/,然后通過反向代理的方式,轉到http://www.wyunfei.com:8081/,這樣的話用戶既可以只需要在瀏覽器輸入域名,又可以準確定位到具體的項目。
問題又來了,什么是反向代理?這個大家可以自行解決,網上有很多我就不班門弄斧了,直接教大家使用。
Nginx
- 下載、安裝
打開官網,直接下載壓縮包,我用的版本是| 2018年12月4日 發布的穩定版
nginx-1.14.2 -
解壓、使用
解壓后會看到,如下圖
Nginx.png - 配置
在剛解壓的nginx目錄下,找到conf/nginx.conf這個文件,在這個文件里,做如下配置:
server {
listen 80; # 監聽端口
server_name www.wyunfei.com; # 瀏覽器訪問地址
location / {
root html; # 文件類型
proxy_pass http://www.wyunfei.com:8081/; # 要展示的項目
}
}
- Nginx常用命令
nginx -t - 是否正確安裝
nginx -v - 版本號
start nginx - 啟動
nginx -s stop - 快速停止或關閉
nginx -s quit - 正常停止或關閉
nginx -s reload - 配置文件修改重新裝載命令
注意:修改了配置文件,一定要記得執行重啟或停止再啟動命令,關閉小黑窗不代表停止或關閉。
訪問http://www.wyunfei.com/試試,不行再找我事兒~~~哈哈哈
第二個項目NodeJS項目
- 通過webpack或gulp等工具打包過的(推薦打包壓縮),按照問題一都放在IIS就可以了
- 未打包的情況略有差別(不推薦源代碼運行)
在NodeJS的入口文件中,配置如下:
NodeJS入口文件
監聽端口改為8082,就可以了,接下來就是Nginx下的配置,如下圖
server {
listen 80; # 監聽端口
server_name www.wyunfei.com; # 瀏覽器訪問地址
location / {
root html; # 文件類型
proxy_pass http://www.wyunfei.com:8081/; # 要展示的項目
}
}
server {
listen 80; # 監聽端口
server_name m.wyunfei.com; # 瀏覽器訪問地址
location / {
root html; # 文件類型
proxy_pass http://www.wyunfei.com:8082/; # 要展示的項目
}
}
訪問http://m.wyunfei.com/試試~~哈哈~牛批~~