nginx反響代理asp.net core,配置https證書 ...
反向代理是為動態 Web 應用提供服務的常見設置。 反向代理終止 HTTP 請求,並將其轉發到 ASP.NET Core 應用。
1.在asp.net core項目中的Startup的Configure方法中配置中間鍵來轉接 X-Forwarded-For
和 X-Forwarded-Proto
標頭
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto });
2.之後在本地將項目發佈,在將發佈後的文件複製到linux伺服器上
3.運行項目
這裡介紹兩種方法:
(1)直接使用dotnet 命令運行程式
表示在後臺運行該應用
nohup dotnet [應用的dll] &
ps : 想要停掉後臺應用時: 先使用 netstat -lntp 找到進程的ID,在使用kill -9 [id] 殺死該進程;
(2)docker容器運行
Dockerfile
FROM microsoft/dotnet:2.2.0-aspnetcore-runtime WORKDIR /app COPY . /app EXPOSE 5000/tcp ENTRYPOINT ["dotnet" , "User.API.dll"]
構建鏡像(將Dockerfile文件放在linux伺服器上的項目文件的根目錄下) docker build -t [鏡像名] . 啟動容器 -d : 表示該容器在後臺運行 -p :容器暴露的埠和要映射容器內應用的埠 docker run -d -p 5000:5000 --name [容器名] [鏡像名]
之後使用 docker ps 命令就可以查看到正在運行的容器
當程式運行起來後,記得去你虛擬機雲服務商管理界面把對應的埠打開,之後在外網使用ip就可以訪問當頁面了。(假如還是訪問不了,那就在檢查一下虛擬機內部的防火牆是否打開了,打開了就把防火牆給關了,一般來說就是這兩個問題)
4.安裝nginx (根據你的linux系統,直接google一下就行了)
5.修改nginx配置文件 /etc/nginx/sites-available/default ,使用 vim 命令打開
server { listen 80; #nginx監聽那個埠,記得也要去把80埠打開喲 server_name example.com *.example.com; #功能變數名稱填你的,網上也有許多免費的,去弄一個,再將本機的公網ip綁定上去 location / { proxy_pass http://localhost:5000; #本地應用地址及埠,可以使用 curl 命令測試一下 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; } }
將上面的內容替換進行,在保存退出即可 (不熟悉vim命令的也可以google學習一下)
修改好上的defalut配置文件夾後,使用的 nginx -s reload重啟一起nginx及可
做到這一步就可以在外網直接使用ip進行訪問了,不用加埠號,因為預設的就是80埠
這裡還有微軟爸爸的文檔可以看
6.在上面的步驟都順利後就可以來配置https了
免費的https證書 : https://certbot.eff.org
在首頁選好你的反向代理伺服器和linux版本後,就按照提示的命令行安裝就行
7.最後
如果nginx出現問題了,比如:訪問的時候出現 502 bad Gateway,那我們就去 /var/log/nginx 文件夾下看看最近的error.log日誌,將錯誤信息複製下來,google一下,一般都能找到解決方法的。