Nginx代理nginx.conf配置——反向代理

一、简单配置

配置server,其中反向代理的页面通过upstream进行配置

ser  nginx;
worker_processes  auto;

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


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream web {
	server xxx.xxx.xxx.xxxx:8081;
    }	

    server {
      	listen       80;
	    server_name  localhost;

	    location /tomcat {
        	proxy_pass http://web/;
    	}
		    

    }

}

到此时,如果只是代理接口即可正常使用。但是如果是代理的页面,会出现css,js等404等问题导致页面功能异常。

二、代理静态文件

server中添加如下location

location ~ .*\.(js|css)?$ {
     expires 12h;
	 proxy_pass http://web;
}
	
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|svg)?$ {
     expires 12h;
     proxy_pass http://web;
}

添加静态资源代理后功能正常。附:如果需要代理某个路径下的静态资源,参考:

指定路径下静态资源中的第3节内容。

三、代理多个项目

代理多个项目时候,可以分配到多个端口中。其参考配置如下:

user  nginx;
worker_processes  auto;

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

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream minio {
	server xxx.xxx.xxx:9090;
    }	

    upstream web {
        server xxx.xxx.xxx:8081;
    }


    server {
      	listen       80;
	    server_name  localhost;

	    location / {
        	proxy_pass http://minio;
    	}
		
  	    location ~ .*\.(js|css)?$ {
        	expires off;
	        proxy_pass http://minio;
    	}
	
	    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|svg)?$ {
        	expires off;
        	proxy_pass http://minio;
	    }	    

    }

    server {
        listen       8081;
        server_name  localhost;

        location / {
            proxy_pass http://web;
        }

        location ~ .*\.(js|css)?$ {
            expires off;
            proxy_pass http://web;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|svg)?$ {
            expires off;
            proxy_pass http://web;
        }
    }

}

四、注意点

如果按照上述配置仍然无法访问,按照以下几点进行排查:

  • 防火墙端口是否开放对应端口,可以使用telnet进行验证
  • Nginx如果是用docker启动,需要将多个端口都映射出来,否则对应端口也无法访问,可以在容器外使用lsof -i:port进行验证

docker创建容器时候映射示例(80和8081端口)如下:

docker run \
-p 80:80 \
-p 8081:8081 \
--name nginx \
-v /home/map/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/map/nginx/conf:/etc/nginx/conf.d \
-v /home/map/nginx/log:/var/log/nginx \
-v /home/map/nginx/html:/usr/share/nginx/html \
-d f9c14fe76d50

猜你喜欢

转载自blog.csdn.net/pp_lan/article/details/131555856
今日推荐