目录

  • 下载与安装
  • 启动nginx
  • 配置多个server
  • 配置反向代理
  • 通过url跳转到不同的服务


下载与安装

  首先是打开nginx的下载页面,链接为http://nginx.org/en/download.html,因为本文是在windows下学习nginx,所以我们下载windows版本的ngxin,如下:

windows nginx配置环境变量 nginx 配置详解windows_windows nginx配置环境变量


  下载完之后,解压到对应的文件夹就行了,解压后目录结构如下:

windows nginx配置环境变量 nginx 配置详解windows_windows nginx配置环境变量_02

启动nginx

  1.打开cmd,进入nginx的目录,启动nginx命令:start nginx,启动后在浏览器输入localhost,如能见到下图,证明启动成功。

windows nginx配置环境变量 nginx 配置详解windows_nginx_03


  2.停止nginx命令:nginx -s stop

  3.重启nginx命令:nginx -s reload

  4.nginx.conf是nginx的配置文件,在conf文件中,文件的文件结构以及属性的配置说明可以参照以下:https://www.runoob.com/w3cnote/nginx-setup-intro.html

配置多个server

  nginx可以配置多个server,而请求时进入哪个server,是通过请求头的Host属性去匹配nginx.conf文件server配置中的server_name得到的,server_name可以使用正则表达式。现在就来配置多个server试试看吧。
  首先,修改本机的hosts文件,为本地地址配置多个域名,hosts文件在C:\Windows\System32\drivers\etc。打开文件后,在后面添加

127.0.0.1 www.zzt.com
127.0.0.1 www.zzt.org
127.0.0.1 www.zzt.cn
127.0.0.1 www.zztzzt.cn
127.0.0.1 www.zztzzt.com
127.0.0.1 www.jams.com

  在nginx的安装目录新建五个目录,每个目录里都放一个index.html,每个index.html写上一句不同的话表示不同。如图:

windows nginx配置环境变量 nginx 配置详解windows_tomcat_04


  之后打开nginx.conf文件,把配置文件中的server注释掉(用#注释),然后复制下面的代码到nginx.conf文件。

server {
		listen 80;
		server_name www;
		location / {
			root   html1;
			index  index.html;
		}
	}

server {
		listen 80;
		server_name localhost;
		location / {
			root   html;
			index  index.html;
		}
	}
 
	server {
		listen  80;
		server_name www.zzt.com;
		location / {
			root   html2;
			index  index.html;     
		}
	}
 
	server {
		listen 80;
		server_name www.zzt.*;
		location / {
			root   html3;
			index  index.html;
	
		}
	}
 
	server {
		listen 80;
		server_name ~\w+.cn;
		location / {
			root   html4;
			index  index.html;      
		}
	}
 
	server {
		listen 80;
		server_name ~.*zzt.com;
		location / {
			root   html5;
			index  index.html; 
		}
	}

  最后,在cmd中启动nginx,然后通过不同的域名访问,会跳转到不同的server。

1.访问localhost

windows nginx配置环境变量 nginx 配置详解windows_nginx_05

2.访问www.zzt.com

windows nginx配置环境变量 nginx 配置详解windows_html_06

3.访问www.zzt.org

windows nginx配置环境变量 nginx 配置详解windows_nginx_07

4.访问www.zztzzt.cn

windows nginx配置环境变量 nginx 配置详解windows_html_08


5.访问www.zztzzt.com

windows nginx配置环境变量 nginx 配置详解windows_nginx_09


6.访问www.jams.com

windows nginx配置环境变量 nginx 配置详解windows_windows nginx配置环境变量_10


  ps:nginx.conf中的server_name可以使用正则表达式进行匹配,当Host匹配不到server_name的时候,就匹配第一个server。如上面访问www.jams.com的时候,没有一个server_name可以匹配到,所以就匹配第一个server。

配置反向代理

  上面我们配置了多个server,但是这多个server都只是访问本地资源,并没有体现nginx反向代理的能力,接下来就来配置实现反向代理。

1.我们要准备两个要代理的服务。我这边准备的是:

127.0.0.1:8080

127.0.0.1:8081

先访问127.0.0.1:8080

windows nginx配置环境变量 nginx 配置详解windows_windows nginx配置环境变量_11


再访问127.0.0.1:8081

windows nginx配置环境变量 nginx 配置详解windows_html_12


两个服务返回的字符串不同以示区别。

**2.修改nginx的配置文件。**我们把配置文件中的server注释掉,然后复制下面的配置到你自己的配置文件中。

upstream tomcatserver{
		server 127.0.0.1:8080 weight=5;  #这里的负载均衡策略是根据权重去轮询,weight和访问比率成正比
		server 127.0.0.1:8081 weight=5;  #这两个服务是我自己准备的服务,如果你们的服务不同要记得更改
	}
	
	server {
		listen  80;
		server_name localhost;
		location / {    # / 指代理所有的请求
             proxy_pass  http://tomcatserver;  #这里就是设置反向代理,tomcatserver就是上面upstream指定的名称,可以更改
        }
	}

  修改完配置文件,保存之后启动nginx就可以看到反向代理配置后的效果了。

3.测试配置后效果

第1次访问:

windows nginx配置环境变量 nginx 配置详解windows_nginx_13


第2次访问:

windows nginx配置环境变量 nginx 配置详解windows_html_14


第3次访问:

windows nginx配置环境变量 nginx 配置详解windows_tomcat_15


  反复多次访问之后发现,配置确实是成功了。Nginx配置的反向代理按照权重比例轮询服务器。

通过url跳转到不同的服务

  有时候,我们需要通过url跳转到不同的服务,例如访问localhost/test1跳到第一个服务,访问localhost/test2跳转到第二个服务。下面就让我们来配置实现吧。
**1.修改nginx的配置文件。**注释掉nginx配置文件的server,然后复制下面的配置到你自己的配置文件中。

upstream tomcatserver1{
		server 127.0.0.1:8080; 
	}
	
	upstream tomcatserver2{
		server 127.0.0.1:8081;
	}
	
	server {
		listen  80;
		server_name localhost;
		location /test1 {    #代理所有以/test1开头的请求
             proxy_pass  http://tomcatserver1; 
        }
		location /test2 {    #代理所有以/test2开头的请求
             proxy_pass  http://tomcatserver2;
        }
	}

2.启动服务,看看效果。

访问localhost/test1:

windows nginx配置环境变量 nginx 配置详解windows_html_16


访问localhost/test2:

windows nginx配置环境变量 nginx 配置详解windows_tomcat_17


  上面的配置只是将请求转发到被代理的服务器,访问localhost/test1就相当于访问127.0.0.1:8080/test1:

  **PS:如果我们想访问localhost/test1,相当于访问127.0.0.1:8080,那要怎么做呢?**答案就是还是修改配置文件,请看下面的配置:

upstream tomcatserver1{
		server 127.0.0.1:8080; 
	}
	
	upstream tomcatserver2{
		server 127.0.0.1:8081;
	}
	
	server {
		listen  80;
		server_name localhost;
		location /test1 {    #代理所有以/test1开头的请求
             proxy_pass  http://tomcatserver1/;  #后面加上/表示忽略匹配到的路径(/test1)
        }
		location /test2 {    #代理所有以/test2开头的请求
             proxy_pass  http://tomcatserver2;
        }
	}

修改配置文件后,启动nginx,访问localhost/test1

windows nginx配置环境变量 nginx 配置详解windows_tomcat_18


  这样子配置就实现了访问localhost/test1,其实就是访问127.0.0.1:8080了。访问localhost/test1/test1就是访问127.0.0.1:8080/test1。

windows nginx配置环境变量 nginx 配置详解windows_html_19