一个nignx 服务反向代理3个IP访问的配置方法

原创 2015年07月09日 20:34:08

</pre>场景:在10.17.55,44:7002和10.17.55.46:7003的weblogic 部署一个web工程,准备做负载均衡。在一台IP:12.17.56.44能访问到55.44和55.46上web工程的机器做nginx代理服务器,代理端口为7000,既12.17.56.44:7000能访问到<span style="font-size:14px;">10.17.55,44:7002或<span style="font-size:14px;">10.17.55.46:7003的web工程,而互联网有个IP22.18.55.33:7000 可以访问到,<span style="font-size: 14px;">12.17.56.44:7000,<span style="font-size: 14px;">12.17.56.44</span></span></span></span>这台服务器的nginx.conf 内容配置如下:<p></p><p><span style="font-size:14px;"></span></p><pre name="code" class="html">#user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  2048;
    accept_mutex off;
    multi_accept on; 
    use epoll; 
}

# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#    load ngx_http_fastcgi_module.so;
#    load ngx_http_rewrite_module.so;
#}
#thread_pool one threads=128 max_queue=0;
http {
    include       mime.types;
    default_type  application/octet-stream;
    #thread_pool one threads=128 max_queue=0;
	include /etc/nginx/mutnginx/*.conf; 
    #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  logs/access.log  main;
    access_log off;
    sendfile        on;
    #tcp_nopush     on;
    sendfile_max_chunk 512k;
    #keepalive_timeout  0;
    keepalive_timeout  65;

   upstream cluster1 {
        # simple round-robin
        ip_hash;
		server  10.17.55,44:7002;
        server  10.17.55.46:7003;

      
    }
  
  #gzip  on;

    server {
        listen       7000;
		server_name    localhost;
    	#   0.99.132.52:700
		#check interval=30
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
  
      	#aio threads=one; 
        proxy_set_header Host $host:7000;
        proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
      	proxy_buffering off;
        proxy_pass http://cluster1/;
		   # root   html;
           #index  index.html index.htm;
        }

	 location /status {
            #check_status;

            access_log   off;
            allow all;
           # deny all;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

配置文件中:

include /etc/nginx/mutnginx/*.conf; 
是在mutnginx目录下,创建了两个跟nginx.conf 相似的文件。

nginx2.conf配置是为了让同个网段即12.17.56.*的其他应用能同个代理ip访问到web工程,其配置如下:


#user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  2048;
    accept_mutex off;
    multi_accept on; 
    use epoll; 
}

# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#    load ngx_http_fastcgi_module.so;
#    load ngx_http_rewrite_module.so;
#}
#thread_pool one threads=128 max_queue=0;
http {
    include       mime.types;
    default_type  application/octet-stream;
    #thread_pool one threads=128 max_queue=0;
 
    #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  logs/access.log  main;
    access_log off;
    sendfile        on;
    #tcp_nopush     on;
    sendfile_max_chunk 512k;
    #keepalive_timeout  0;
    keepalive_timeout  65;

   upstream cluster3 {
        # simple round-robin
        ip_hash;
		server  10.17.55,44:7002;
        server  10.17.55.46:7003;

      
    }
  
  #gzip  on;

    server {
        listen       7000;
		server_name    localhost;
    	#   0.99.132.52:700
		#check interval=30
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
  
      	#aio threads=one; 
        proxy_set_header Host $host:7000;
        proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
      	proxy_buffering off;
        proxy_pass http://cluster3/;
		   # root   html;
           #index  index.html index.htm;
        }

	 location /status {
            #check_status;

            access_log   off;
            allow all;
           # deny all;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

还有一个nginx3.conf 是为了让,其他内网ip统一访问的代理,其配置如下:

#user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  2048;
    accept_mutex off;
    multi_accept on; 
    use epoll; 
}

# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#    load ngx_http_fastcgi_module.so;
#    load ngx_http_rewrite_module.so;
#}
#thread_pool one threads=128 max_queue=0;
http {
    include       mime.types;
    default_type  application/octet-stream;
    #thread_pool one threads=128 max_queue=0;
 
    #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  logs/access.log  main;
    access_log off;
    sendfile        on;
    #tcp_nopush     on;
    sendfile_max_chunk 512k;
    #keepalive_timeout  0;
    keepalive_timeout  65;

   upstream cluster2 {
        # simple round-robin
        ip_hash;
		server  10.17.55,44:7002;
        server  10.17.55.46:7003;

      
    }
  
  #gzip  on;

    server {
        listen       7000;
		server_name    localhost;
    	#   0.99.132.52:700
		#check interval=30
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
  
      	#aio threads=one; 
        proxy_set_header Host $host:5123;
        proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
      	proxy_buffering off;
        proxy_pass http://cluster2/;
		   # root   html;
           #index  index.html index.htm;
        }

	 location /status {
            #check_status;

            access_log   off;
            allow all;
           # deny all;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
其中
proxy_set_header Host $host:5123;#是映射端口,如果12.17.56.44:7000映射IP为102.34.56.44 那么5123就是映射器7000端口
这样
12.17.56.44
就被一个互联网IP22.18.55.33:7000 和内网12.17.56.44.:5213以及12.17.56.44:7000做了映射代理,就是这三个ip都能访问到web工程。

                    

如何取得nginx做反向代理时的真实IP?

1. 编译 对于client -> nginx reverse proxy -> apache, 要想在程序中取得真实的IP,在执行nginx的configure时,必须指定参数“--with-h...

Ngnix反向代理内外网访问

#user nobody; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice;...

Nignx反向代理负载均衡

Nignx反向代理负载均衡    1.web1和web2配置安装 yum install httpd -y #安装httpdecho 192.168.1.188 >/var/www/html/...

IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容

IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容

IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容

原帖:http://www.cnblogs.com/wuyou/p/3455619.html 环境: windows server 2003,IIS6服务器,Tomcat7服务器 ...
  • CCLOVETT
  • CCLOVETT
  • 2014年05月19日 16:16
  • 16600

查找“CDN、负载均衡、反向代理”等大型网络真实IP地址的方法

首先,CDN、负载均衡、反向代理还分为很多层,有时查出来的是最外层的 CDN 服务器群,真实的机器是不对外开放的,类似这样的: 用户  →   CDN 网络   →  一台或多台真实机器    ...
  • xysoul
  • xysoul
  • 2015年09月08日 13:22
  • 1228

在反向代理中Java获取客户端真实IP地址的两种方法

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I...

多级反向代理下,Java获取请求客户端的真实IP地址方法整合

现象描述一:在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客...

多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I...

Nginx作为反向代理时传递客户端IP的设置方法

http://www.jb51.net/article/53821.htm nginx默认配置文件里面是没有进行日志转发配置的,这个需要我们自己手动来操作了,当然后端的real server不同时操...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个nignx 服务反向代理3个IP访问的配置方法
举报原因:
原因补充:

(最多只允许输入30个字)