在一些项目需求中,经常需要隐藏后面真实的项目ip地址。要求是端口对应端口代理。使用server块配置多个端口转发。每个server块都有一个独特的监听端口,并将请求转发到指定的后端服务器。

下面就配置nginx配置文件示例

nginx.conf

user  nginx;
worker_processes  1;

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


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

        server {
                listen 80;
                root /home/nginx/html;
                    }


    include /etc/nginx/conf.d/*.conf;
}


包含conf.d目录下的配置文件,分开会比较好管理

server {
                listen 81;

       location / {
       proxy_pass http://10.30.10.10:81
       }

}
 server {
                listen 82;

       location / {
       proxy_pass http://10.30.10.10:82;
       }

}
server {
                listen 83;

       location / {
       proxy_pass http://10.30.10.111:83;
       }

}

搭建参考,可以参考其他文章

docker run -d -p 80-89 --name nginx --restart=always -v /etc/localtime:/etc/localtime -v /home/nginx/www:/home/nginx/html

-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf.d:/etc/nginx/conf.d -v /home/nginx/logs:/var/log/nginx nginx:latest

说明:

-p 80-89 映射一个端口范围。也可以一个端口对应一个端口映射:如 -p 80:80 -p 81:81 -p 82:82

nginx代理ip地址:10.30.10.9,服务器开放对应的映射端口

那么我直接访问10.30.10.9:81端口,就会将请求转发到10.30.10.10:81项目地址,下面的以此类推

10.30.10.9:82→10.30.10.10:82

10.30.10.9:83→10.30.10.111:83