• 使用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             proxy_http_version 1.1;
     67             proxy_set_header Upgrade $http_upgrade;
     68             proxy_set_header Connection keep-alive;
     69             proxy_set_header Host $host;
     70             proxy_set_header X-Real-IP $remote_addr;
     71             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     72             proxy_cache_bypass $http_upgrade;
     73             proxy_set_header X-NginX-Proxy true;
     74             #rewrite ^/bmd/(.*)$ /$1 break;
     75             #proxy_redirect ~^http://192.168.2.32/bmd/(.*)$ http://127.0.0.1:5001/$1;
     76             proxy_pass http://127.0.0.1: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     server {
     94         listen       8000;
     95         listen       [::]:8000;
     96         server_name  api;
     97         #root         /usr/share/nginx/html;
     98 
     99         # Load configuration files for the default server block.
    100         include /etc/nginx/default.d/*.conf;
    101 
    102         location /api/v1 {
    103             proxy_pass http://127.0.0.1:5003;
    104             proxy_http_version 1.1;
    105             proxy_set_header Upgrade $http_upgrade;
    106             proxy_set_header Connection keep-alive;
    107             proxy_set_header Host $host;
    108             proxy_set_header X-Real-IP $remote_addr;
    109             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    110             proxy_cache_bypass $http_upgrade;
    111         }
    112 
    113         error_page 404 /404.html;
    114             location = /40x.html {
    115         }
    116 
    117         error_page 500 502 503 504 /50x.html;
    118             location = /50x.html {
    119         }
    120     }
    121 }
  • 相关阅读:
    《.NET 5.0 背锅案》第5集-案情大转弯:都是我们的错,让 .NET 5.0 背锅团队
    [转]广东2021年初级会计考试报名:2020年12月14日起
    [转]楷书书写教程
    漫漫岁月唯一身心
    POS及POSP平台管理系统
    微服务场景下的自动化测试
    Hazelcast集群服务——Hazelcast介绍
    缓存模式(Cache Aside、Read Through、Write Through、Write Behind)
    springboot~uaa~scope对实体的字段添加限制
    java~通过ClassLoader动态加载~tomcat模型
  • 原文地址:https://www.cnblogs.com/wdw984/p/13731062.html
Copyright © 2020-2023  润新知