Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务反向代理(Reverse Proxy)指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给Internet上请求的客户端,即为反向代理服务器。

下载&安装

首先去Nginx官网下载:

python 反向代理 服务器 反向代理服务器搭建_html


解压文件:

python 反向代理 服务器 反向代理服务器搭建_代理服务器_02

配置代理服务器

nginx的配置是在 conf/nginx.conf 文件中进行配置


反向代理一个服务器
upstream nodeserver {
	# 服务器所在的地址
	server	localhost:8080;
}

server {
	# 监听的端口号
	listen	80;
	# 指定nginx服务器对应的ip地址
	server_name	 www.wujingchang.com;
	# 设置网页的默认编码格式
	charset	 utf-8;
	# 设置反向代理服务器访问模式
	location / {
		#用于指定访问根目录时
        root   html;
        #在不指定访问具体资源时,默认展示的资源文件列表
        index  index.html index.htm;
        #应用前面定义的nodeserver
        proxy_pass    http://nodeserver;
        #Proxy Settings
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 10m; 
        client_body_buffer_size 128k; 
        proxy_connect_timeout 90; 
        proxy_send_timeout 90; 
        proxy_read_timeout 90; 
        proxy_buffer_size 4k; 
        proxy_buffers 4 32k; 
        proxy_busy_buffers_size 64k; 
        proxy_temp_file_write_size 64k;
	}
}
反向代理多个服务器
upstream nodeserver {
	# 服务器1所在的地址
	server	localhost:8080;
	# 服务器2所在的地址
	server localhost:8081;
}

server {
	# 监听的端口号
	listen	80;
	# 指定nginx服务器对应的ip地址
	server_name	 www.wujingchang.com;
	# 设置网页的默认编码格式
	charset	 utf-8;
	# 设置反向代理服务器访问模式
	location / {
		#用于指定访问根目录时
        root   html;
        #在不指定访问具体资源时,默认展示的资源文件列表
        index  index.html index.htm;
        #应用前面定义的nodeserver
        proxy_pass    http://nodeserver;
        #Proxy Settings
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 10m; 
        client_body_buffer_size 128k; 
        proxy_connect_timeout 90; 
        proxy_send_timeout 90; 
        proxy_read_timeout 90; 
        proxy_buffer_size 4k; 
        proxy_buffers 4 32k; 
        proxy_busy_buffers_size 64k; 
        proxy_temp_file_write_size 64k;
	}
}
代理不同的工程

不同的工程即指不同的项目,默认的nginx代理服务器是通过80端口访问,但是如果是多个不同的工程,如果仍然通过相同的端口访问,这样明显会影响性能。
解决方法:

upstream nodeserver1 {
	ip_hash;
	# 工程1所在的地址
	server	localhost:8080;
}

upstream nodeserver2 {
	ip_hash;
	# 工程1所在的地址
	server	localhost:8081;
}

server {
	# 监听的端口号
	listen	80;
	# 指定nginx服务器对应的ip地址
	server_name	 www.wujingchang.com;
	# 设置网页的默认编码格式
	charset	 utf-8;
	# 设置反向代理服务器访问模式
	location ^~ /process1/ {
		#用于指定访问根目录时
           root   html;
           #在不指定访问具体资源时,默认展示的资源文件列表
           index  index.html index.htm;
           #应用前面定义的nodeserver
           proxy_pass    http://nodeserver1;
           #Proxy Settings
           proxy_set_header        Host            $host;
           proxy_set_header        X-Real-IP       $remote_addr;
           proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
           client_max_body_size 10m; 
           client_body_buffer_size 128k; 
           proxy_connect_timeout 90; 
           proxy_send_timeout 90; 
           proxy_read_timeout 90; 
           proxy_buffer_size 4k; 
           proxy_buffers 4 32k; 
           proxy_busy_buffers_size 64k; 
           proxy_temp_file_write_size 64k;
	}

	location ^~ /process2/ {
		#用于指定访问根目录时
           root   html;
           #在不指定访问具体资源时,默认展示的资源文件列表
           index  index.html index.htm;
           #应用前面定义的nodeserver
           proxy_pass    http://nodeserver2;
           #Proxy Settings
           proxy_set_header        Host            $host;
           proxy_set_header        X-Real-IP       $remote_addr;
           proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
           client_max_body_size 10m; 
           client_body_buffer_size 128k; 
           proxy_connect_timeout 90; 
           proxy_send_timeout 90; 
           proxy_read_timeout 90; 
           proxy_buffer_size 4k; 
           proxy_buffers 4 32k; 
           proxy_busy_buffers_size 64k; 
           proxy_temp_file_write_size 64k;
	}
}

运行访问Nginx

运行nginx,打开终端,输入:

start  nginx

打开浏览器,访问server中配置的servername对应的域名(如果不是实际的域名,可以直接去host文件中配置),nginx则会代理请求到相应的服务器。