1. 程式人生 > >使用 Nginx 對 ASP.NETCore網站 或 Docker 等進行反向代理

使用 Nginx 對 ASP.NETCore網站 或 Docker 等進行反向代理

server{} linux中 _for 演示 支持 docke 端口 技術 只需要

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 等進行反向代理