linux系統下使用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端口

  

  這里還有微軟爸爸的文檔可以看 

   https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.1&tabs=aspnetcore2x

 6.在上面的步驟都順利后就可以來配置https了

  免費的https證書 : https://certbot.eff.org

  在首頁選好你的反向代理服務器和linux版本后,就按照提示的命令行安裝就行

  

 

 

 

    

 

 

 

  7.最后

  如果nginx出現問題了,比如:訪問的時候出現 502 bad Gateway,那我們就去 /var/log/nginx 文件夾下看看最近的error.log日志,將錯誤信息復制下來,google一下,一般都能找到解決方法的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM