目錄
1.前言
2.安裝
3.配置文件詳解
4.工做原理
5.Linux下託管.NET Core項目
6.Linux下.NET Core項目負載均衡
7.Linux下.NET Core項目Nginx+Keepalived高可用(主從模式)
8.Linux下.NET Core項目Nginx+Keepalived高可用(雙主模式)
9.Linux下.NET Core項目LVS+Keepalived+Nginx高可用集羣
10.構建靜態服務器
11.日誌分析
12.優化策略
13.總結
在這裏我就不介紹如何在Linux上部署.Net Core以及進程守護監控等內容,若是須要能夠查看以前發佈的文章。《.NET Core項目部署到Linux(Centos7)(六)發佈.NET Core 項目到Linux》、《.NET Core項目部署到Linux(Centos7)(七)啓動和中止.NET Core項目》、《.NET Core項目部署到Linux(Centos7)(八)爲.NET Core項目建立Supervisor進程守護監控》html
ASP.NET Core內置了Kestrel服務器,但功能簡單,不是一個全功能的Web服務器,主要用於SelfHost,它旨在使ASP.NET儘量快,但其管理安全性和提供靜態文件的能力有限,正式運行仍是要依賴IIS、Apache、Nginx等功能全面的服務器,爲ASP.NET Core程序提供相似緩存、壓縮請求、SSL終端等高深的特性或功能。這兩種服務器的關係是:Nginx、IIS等做爲Kestrel的反向代理服務器。node
#編輯nginx.conf sudo vim /etc/nginx/nginx.conf #進入文件後,按「i」或者「a」進入插入模式,插入下面的配置信息
進去註釋掉http配置下server的默認配置內容python
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # server { # listen 80 default_server; # listen [::]:80 default_server; # server_name _; # root /usr/share/nginx/html; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
#按ESC,輸入命令保存配置文件 :wq (保存編輯操做退出) :wq! (保存編輯強制退出) :w ! sudo tee %
註釋完原來的映射以後,咱們須要在/etc/nginx/conf.d文件夾下爲.Net Core項目新建一個DemoNetCore.conf文件,文件配置以下linux
#進入conf.d文件夾 cd /etc/nginx/conf.d #建立配置文件 sudo touch DemoNetCore.conf #編輯配置文件 sudo vim DemoNetCore.conf #配置文件信息 server { listen 80; location / { proxy_pass http://localhost:8081; 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; } }
配置好以後重啓Nginx,重啓的時候可能會直接報錯,以下圖nginx
#重啓Nginx sudo systemctl restart nginx
這個時候咱們先找到Nginx相關進程,而後直接幹掉,而後再啓動vim
#查看Nginx進程 ps aux | grep nginx #殺死相關進程 sudo kill -9 2058 sudo kill -9 2059 #重啓Nginx sudo systemctl restart nginx
這裏顯示502 Bad Gateway,緣由是SELinux配置的問題緩存
安全加強型 Linux(Security-Enhanced Linux)簡稱 SELinux,它是一個 Linux 內核模塊,也是 Linux 的一個安全子系統。
SELinux 主要由美國國家安全局開發。2.6 及以上版本的 Linux 內核都已經集成了 SELinux 模塊。
SELinux 的結構及配置很是複雜,並且有大量概念性的東西,要學精難度較大。不少 Linux 系統管理員嫌麻煩都把 SELinux 關閉了。
若是能夠熟練掌握 SELinux 並正確運用,我以爲整個系統基本上能夠到達"堅如盤石"的地步了(請永遠記住沒有絕對的安全)。
掌握 SELinux 的基本概念以及簡單的配置方法是每一個 Linux 系統管理員的必修課。安全
因此出現這個問題有兩種解決方案:服務器
①、直接關閉SELinuxsession
#進入SELinux目錄 cd /etc/selinux #編輯selinux config配置文件 sudo vim config #修改配置:SELINUX=disabled,保存退出
保存好以後,從enforcing或permissive改成diabled,須要重啓系統以後才能生效。當咱們重啓以後,能夠看到下圖訪問正常了。
②、將Nginx添加至SELinux的白名單
yum -y install policycoreutils-python cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx semodule -i mynginx.pp