有两个.NET CORE3.1网站部署在CentOS7上(内网IP是192.168.2.32),现在想实现访问http://192.168.2.32时访问A网站,访问http://192.168.2.32/bmd/ 时访问的是B网站。
在Nginx里配置两个location可以实现,但会导致B网站的样式和js丢失(B网站页面引用js和css的方式是/css/*和/js/*)。
经过摸索,通过在location /中配置$http_referer来进行跳转,即可完美实现A、B两个网站独立访问。
具体配置如下:
1@H_301_11@ # For more@H_301_11@ information on configuration,see:
@H_301_11@ 2@H_301_11@ # * Official English Documentation: http://@H_301_11@Nginx.org/en/docs/@H_301_11@
3@H_301_11@ # * Official Russian Documentation: http:Nginx.org/ru/docs/@H_301_11@
4@H_301_11@
5@H_301_11@ user root;
@H_301_11@ 6@H_301_11@ worker_processes auto;
@H_301_11@ 7@H_301_11@ error_log /var/log/Nginx/error.log;
@H_301_11@ 8@H_301_11@ pid /run/Nginx.pid;
@H_301_11@ 9@H_301_11@
10@H_301_11@ # Load dynamic modules. See /usr/share/doc/Nginx/README.dynamic.
@H_301_11@ 11@H_301_11@ include /usr/share/Nginx/modules/*@H_301_11@.conf;
@H_301_11@ 12@H_301_11@
13@H_301_11@ events {
@H_301_11@ 14@H_301_11@ worker_connections 1024;
@H_301_11@ 15@H_301_11@ }
@H_301_11@ 16@H_301_11@
17@H_301_11@ http {
@H_301_11@ 18@H_301_11@ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
@H_301_11@ 19@H_301_11@ '$status $body_bytes_sent "$http_referer" '
@H_301_11@ 20@H_301_11@ '"$http_user_agent" "$http_x_forwarded_for"';
@H_301_11@ 21@H_301_11@
22@H_301_11@ access_log /var/log/Nginx/access.log main;
@H_301_11@ 23@H_301_11@ gzip on;
@H_301_11@ 24@H_301_11@
25@H_301_11@ sendfile on;
@H_301_11@ 26@H_301_11@ tcp_nopush on;
@H_301_11@ 27@H_301_11@ tcp_nodelay on;
@H_301_11@ 28@H_301_11@ keepalive_timeout 65;
@H_301_11@ 29@H_301_11@ types_hash_max_size 2048;
@H_301_11@ 30@H_301_11@
31@H_301_11@ include /etc/Nginx/mime.types;
@H_301_11@ 32@H_301_11@ default_type application/octet-stream;
@H_301_11@ 33@H_301_11@
34@H_301_11@ # Load modular configuration files from the /etc/Nginx/conf.d directory.
@H_301_11@ 35@H_301_11@ # See @H_301_11@http://Nginx.org/en/docs/ngx_core_module.html@H_301_11@#include
@H_301_11@ 36@H_301_11@ # for more information.
@H_301_11@ 37@H_301_11@ include /etc/Nginx/conf.d/*.conf;
@H_301_11@ 38@H_301_11@
39@H_301_11@ server {
@H_301_11@ 40@H_301_11@ listen 80;
@H_301_11@ 41@H_301_11@ listen [::]:80;
@H_301_11@ 42@H_301_11@ server_name web;
@H_301_11@ 43@H_301_11@ #root /usr/share/Nginx/html;
@H_301_11@ 44@H_301_11@
45@H_301_11@ # Load configuration files for the default server block.
@H_301_11@ 46@H_301_11@ include /etc/Nginx/default.d/*.conf;
@H_301_11@ 47@H_301_11@
48@H_301_11@ location / {
@H_301_11@ 49@H_301_11@ proxy_http_version 1.1;
@H_301_11@ 50@H_301_11@ proxy_set_header Upgrade $http_upgrade;
@H_301_11@ 51@H_301_11@ proxy_set_header Connection keep-alive;
@H_301_11@ 52@H_301_11@ proxy_set_header Host $host;
@H_301_11@ 53@H_301_11@ proxy_set_header X-Real-IP $remote_addr;
@H_301_11@ 54@H_301_11@ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@H_301_11@ 55@H_301_11@ proxy_cache_bypass $http_upgrade;
@H_301_11@ 56@H_301_11@ proxy_set_header X-Nginx-Proxy true;
@H_301_11@ 57@H_301_11@ if ($http_referer ~ 'bmd')
@H_301_11@ 58@H_301_11@ {
@H_301_11@ 59@H_301_11@ #permanent代表301永久跳转,redirect为302临时跳转,这里的配置是核心,凡是bmd的前缀都带上bmd,从而解决了/css和/js引用404的问题
@H_301_11@ 60@H_301_11@ rewrite ^/(.*)$ http://$host/bmd/$1 permanent;
@H_301_11@ 61@H_301_11@ }
@H_301_11@ 62@H_301_11@ proxy_pass @H_301_11@http://127.0.0.1@H_301_11@:5000/;
@H_301_11@ 63@H_301_11@ }
@H_301_11@ 64@H_301_11@ location ^~/bmd/ {
@H_301_11@ 65@H_301_11@ root /usr/local/whitelist;
@H_301_11@ 66@H_301_11@ 67@H_301_11@ 68@H_301_11@ 69@H_301_11@ 70@H_301_11@ 71@H_301_11@ 72@H_301_11@ 73@H_301_11@ 74@H_301_11@ #rewrite ^/bmd/(.*)$ /$1 break;
@H_301_11@ 75@H_301_11@ #proxy_redirect ~^@H_301_11@http://192.168.2.32/bmd/@H_301_11@(.*)$ @H_301_11@:5001/$1;
@H_301_11@ 76@H_301_11@ :5001/;
@H_301_11@ 77@H_301_11@ 78@H_301_11@ location /Nginxstatus {
@H_301_11@ 79@H_301_11@ stub_status on;
@H_301_11@ 80@H_301_11@ access_log /usr/local/Nginx/logs/status.log;
@H_301_11@ 81@H_301_11@ auth_basic "NginxStatus";
@H_301_11@ 82@H_301_11@ 83@H_301_11@
84@H_301_11@ error_page 404 /404.html;
@H_301_11@ 85@H_301_11@ location = /40x.html {
@H_301_11@ 86@H_301_11@ 87@H_301_11@
88@H_301_11@ error_page 500 502 503 504 /50x.html;
@H_301_11@ 89@H_301_11@ location = /50x.html {
@H_301_11@ 90@H_301_11@ 91@H_301_11@ }
@H_301_11@ 92@H_301_11@
93@H_301_11@ 94@H_301_11@ listen 8000;
@H_301_11@ 95@H_301_11@ listen [::]:8000;
@H_301_11@ 96@H_301_11@ server_name api;
@H_301_11@ 97@H_301_11@ 98@H_301_11@
99@H_301_11@ 100@H_301_11@ 101@H_301_11@
102@H_301_11@ location /api/v1 {
@H_301_11@103@H_301_11@ :5003;
@H_301_11@104@H_301_11@ 105@H_301_11@ 106@H_301_11@ 107@H_301_11@ 108@H_301_11@ 109@H_301_11@ 110@H_301_11@ 111@H_301_11@ 112@H_301_11@
113@H_301_11@ 114@H_301_11@ 115@H_301_11@ 116@H_301_11@
117@H_301_11@ 118@H_301_11@ 119@H_301_11@ 120@H_301_11@ 121@H_301_11@ }@H_301_11@
原文链接:https://www.cnblogs.com/wdw984/p/13731062.html