使用 Nginx 對 ASP.NETCore網站 或 Docker 等進行反向代理
1,Nginx 的 配置文件
Nginx 可以配置反向代理、負載均勻等, 其默認配置文件名為 nginx.conf 。
一般存放於 /你的安裝目錄/nginx/conf 下
Nginx 加載配置信息,可以把所有的配置都放進 nginx.conf 文件,也可以根據站點分別放到不同的文件,然後在 nginx.conf 文件中,使用 include 命令把配置文件包含進去。
nginx 的配置是立即生效的,也就是說,不需要關閉、重啟 nginx ,修改配置文件並保存後,配置立即生效。
自定義配置文件可以任意命名。
2,反向代理配置代碼
以下為配置一個反向代理的簡單例子,適用於ASP.NET Core、Docker等,內容比較簡單,單純屬於反向代理。目的是在網外能夠訪問到服務器的資源。
註:ASP.NET Core 默認使用的是 Kestrel ,使其實現跨平臺,需要反向代理才能在外網進行訪問。
配置文本:
server { listen 端口; #多個域名使用英文逗號分隔 80,81 server_name ip或域名; #多個域名使用英文逗號分隔開 location / { proxy_pass http://ip:端口; #例 http://localhost:8111 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
只需要更改3個地方。
每個配置,使用一個 server
server
{
}
註意:
如果你想配置多端口多域名訪問,則需要多個的 server{} 。
Nginx 中,同一個 server{} 配置,裏面的端口是共用的。端口、域名屬於交叉關系。(下圖有演示)
假設
server {
listen 80,81,82,83; #多個域名使用英文逗號分隔 80,81
server_name a.com,b.com,c.com,d.com; #多個域名使用英文逗號分隔開
...
...
}
那麽,實際訪問,公有 4*4 種情況。
a.com 80,81,82,83
b.com 80,81,82,83
c.com 80,81,82,83
d.com 80,81,82,83
- - - - -
你可以直接代碼內容放進到nginx.conf文件中,也可以放到其他可訪問目錄,然後使用
//1 一個文件
include /www/server/panel/vhost/nginx/test1.conf;
//2 該目錄下所有的.conf文件
include /www/server/panel/vhost/nginx/*.conf;
//也可以是其他文本文件,這裏不再贅述
3,使用寶塔面板,手動添加配置
寶塔面板是非常強大的管理器,不過在Linux中,其只支持 自動為 PHP添加網站。
如果你的服務器安裝了寶塔面板,利用寶塔安裝 nginx 等組件,那麽那些組件的安裝目錄是不同於默認安裝目錄的的。
使用寶塔面板安裝的nginx,
nginx.conf 位置 /www/server/nginx/conf
單獨文件位置 /www/server/panel/vhost/nginx
寶塔為每個網站,創建一個配置文件,存在 /www/server/panel/vhost/nginx 目錄中。
用戶手動添加配置的話,打開這個目錄,然後新建一個文件,把代碼粘貼進去即可。
使用 Nginx 對 ASP.NETCore網站 或 Docker 等進行反向代理