回答
收藏
分享
举报
nginx配置请教
提问于2025-05-21 18:11

浏览 3.4k

有两台服务器A和B,A是公网ip,做反向代理;B是内网ip,在docker容器中部署了3个学校的应用,分别是81,82,83端口。通过访问

1.http://zjy.gz.com:9081/d-ui/

2.http://zjy.gz.com:9082/d-ui/

3.http://zjy.gz.com:9083/d-ui/,可以正常访问这三个学校,A的nginx的配置如下:

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  zjy.gz.com;
        absolute_redirect  off;

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

    }

    server {
        listen       9081;
        server_name  localhost;
		location / {
            root   html;
            index  index.html index.htm;
        }
        location /dbak/ {
		  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://192.168.2.121:81/dbak/;
	    }
        location /d-ui {
		  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://192.168.2.121:81/d-ui;
	   }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
    server {
        listen       9082;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        location /dgimp/ {
		  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://192.168.2.121:82/dgimp/;
	   }

        location /d-ui {
		  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://192.168.2.121:82/d-ui;
	   }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

    
    server {
        listen       9083;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        location /dbak/ {
		  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://192.168.2.121:83/dbak/;
	   }

        location /d-ui {
		  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://192.168.2.121:83/d-ui;
	   }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

,然后内网中三个学校的nginx配置是一样的,如下:


#user  nobody;
worker_processes  1;


#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 100m;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	
	map $http_upgrade $connection_upgrade {
		default upgrade;
		'' close;
	}

    add_header X-Permitted-Cross-Domain-Policies value;
    add_header Strict-Transport-Security: max-age=16070400;
    add_header 'Referrer-Policy' 'origin';
    add_header X-Download-Options "noopen" always;
    add_header X-XSS-Protection 1;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options SAMEORIGIN;

    upstream dataease {
        server localhost:8081;
    }


	server {
        listen       80;
        server_name  localhost;


	   location /d-ui/ { 
            alias html/d-ui/;
            index index.html index.htm;
            try_files $uri $uri/ /d-ui/;
        }

	   location /dbak/ {
		  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://127.0.0.1:906/dbak/;
	   }
		
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
}


,但是我现在要统一都走80端口,并且路径上添加各自学校的学校名访问,如:

1.http://zjy.gz.com/xuexiao1/d-ui/,

2.http://zjy.gz.com/xuexiao2/dgimp-ui/,

3.http://zjy.gz.com/xuexiao3/dgimp-ui/,并且内网实际调用接口的时候是不带这个学校名的,d-ui是前端,dbak是后端,该如何修改可以解决。大模型查了好多都不行,没招了

已修改于2025-05-21 18:14



写下您的回答
发表回答
全部回答(0)

按点赞数排序

按时间排序

提问者
这家伙很懒还未留下介绍~
1
文章
1
问答
0
粉丝
相关问答

options请求?需要跨域访问? 

点赞 0
浏览 7.8k

sticky模块只能在linux下吧,win下没有。tomcat好像有个session复制吧,或者可以用共享session。

点赞 0
浏览 7.7k

没办法完全不受影响的,因为mirror是子请求,当子请求未结束时,主请求消耗的内存至少是无法释放的。你可以尝试在/mirror里,把超时时间大幅度调低,包括connect/read/send,再压下看看。

点赞 0
浏览 10.4k