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