使用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 # 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 }

 

猜你在找的CentOS相关文章