本文共 4501 字,大约阅读时间需要 15 分钟。
Nginx配置与.NET Core 3.1网站部署在CentOS7上的解决方案
在CentOS7上部署两个.NET Core 3.1网站,分别监听内网IP192.168.2.32下的不同路径,实现独立访问的需求。通过Nginx配置,可以实现以下场景:访问http://192.168.2.32直接跳转至A网站,访问http://192.168.2.32/bmd/则跳转至B网站。以下是具体实现方法。
在部署两个.NET Core 3.1网站时,若将两个网站部署在同一IP地址下的不同路径下,可能会导致以下问题:
为了解决上述问题,可以通过Nginx配置实现路径重写和资源加载的正确映射。以下是具体的配置方法。
配置文件结构
user root;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;# 动态模块加载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; gzip on; 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; include /etc/nginx/conf.d/*.conf; server { listen 80; listen [::]:80; server_name web; # 包含默认服务器配置 include /etc/nginx/default.d/*.conf; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_bypass $http_upgrade; proxy_set_header X-NginX-Proxy true; # 处理http_referer,解决B网站资源加载问题 if ($http_referer ~ 'bmd') { rewrite ^/(.*)$ http://$host/bmd/$1 permanent; } proxy_pass http://127.0.0.1:5000/; } location ^~/bmd/ { root /usr/local/whitelist; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_bypass $http_upgrade; proxy_set_header X-NginX-Proxy true; # 优化资源路径 # rewrite ^/bmd/(.*)$ /$1 break; # proxy_redirect ~^http://192.168.2.32/bmd/(.*)$ http://127.0.0.1:5001/$1; proxy_pass http://127.0.0.1:5001/; } location /Nginxstatus { stub_status on; access_log /usr/local/nginx/logs/status.log; auth_basic "NginxStatus"; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } server { listen 8000; listen [::]:8000; server_name api; # 包含默认服务器配置 include /etc/nginx/default.d/*.conf; location /api/v1 { proxy_pass http://127.0.0.1:5003; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_bypass $http_upgrade; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }} 配置解析
/bmd/ 路径的处理规则关键配置要点
rewrite指令实现路径重写proxy_set_header设置必要的HTTP头信息proxy_cache控制缓存策略proxy_pass实现请求转发安装Nginx
yum install nginx
配置Nginx
nano /etc/nginx/conf.d/default.conf
启动Nginx
systemctl start nginxsystemctl enable nginx
验证配置
curl -I http://192.168.2.32curl -I http://192.168.2.32/bmd/
路径配置
/usr/local/whitelist需要挂载或创建为B网站的物理路径缓存设置
proxy_cache_bypass和proxy_cache的配置性能优化
keepalive_timeout和worker_connections的值通过上述配置,可以有效实现同一IP地址下多个.NET Core 3.1网站的独立访问,同时保证资源加载的正确性。
转载地址:http://ruubz.baihongyu.com/