nginx配置(高级)

本文介绍了如何通过Nginx配置二级域名,将/dev-api和/prod-api请求分别代理到本地的8080和8081端口,实现不同后台服务的隔离。同时展示了如何配置不同二级域名来托管静态资源,如农场和科学项目的前端应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代理到同一二级域名的不同后台端口

server {              
    listen 80;
    server_name 二级域名;
    		location /dev-api {
            rewrite  ^.+dev-api/?(.*)$ /$1 break;
            include  uwsgi_params;
            proxy_pass http://localhost:8080/;
        }
            location /prod-api {
            rewrite  ^.+prod-api/?(.*)$ /$1 break;
            include  uwsgi_params;
            proxy_pass http://localhost:8081/;
        }
}

代理到不同二级域名

    server {              
    listen       80;    
    server_name  二级域名; 
    
    location / {
        root   /www/wwwroot/farm/dist;
        index  index.html index.htm;
    } 
    }
    
    server {              
    listen       80;    
    server_name  二级域名; 
    
    location / {
        root   /www/wwwroot/science/dist;
        index  index.html index.htm;
    } 
    }

反向代理时资源路径不匹配解决方法:sub_filter替换

worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    # 限制body大小
    client_max_body_size 100m;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    # https包含http资源时强制转https
    # add_header Content-Security-Policy "upgrade-insecure-requests";
    upstream minio-admin {
        server 127.0.0.1:9001;
    }

    server {
        listen       80;
        server_name  localhost;

        # https配置参考 start
        #listen       443 ssl;

        # 证书直接存放 /docker/nginx/cert/ 目录下即可 更改证书名称即可 无需更改证书路径
        #ssl on;
        #ssl_certificate      /etc/nginx/cert/xxx.local.crt; # /etc/nginx/cert/ 为docker映射路径 不允许更改
        #ssl_certificate_key  /etc/nginx/cert/xxx.local.key; # /etc/nginx/cert/ 为docker映射路径 不允许更改
        #ssl_session_timeout 5m;
        #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #ssl_prefer_server_ciphers on;
        # https配置参考 end



        # https 会拦截内链所有的 http 请求 造成功能无法使用
        # 解决方案1 将服务 也配置成 https
        # 解决方案2 将菜单配置为外链访问 走独立页面 http 访问
        location /console/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             # websocket参数
            proxy_http_version      1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_pass http://minio-admin/;
            # 启用 sub_filter,需要指定满足条件的 MIME 类型
            sub_filter_types text/html application/javascript application/json text/css;

            
            # 使用 sub_filter 替换资源文件路径
            sub_filter 'src="/' 'src="/console/';
            sub_filter 'href="/' 'href="/console/';
          
        }
       
         # minio的api服务代理
         location /api/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://minio-admin/api/;
          
          }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值