使用Nginx在80端口上代理多个.NET CORE网站

前端之家收集整理的这篇文章主要介绍了使用Nginx在80端口上代理多个.NET CORE网站前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

有两个.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

猜你在找的CentOS相关文章