目录
- 下载与安装
- 启动nginx
- 配置多个server
- 配置反向代理
- 通过url跳转到不同的服务
下载与安装
首先是打开nginx的下载页面,链接为http://nginx.org/en/download.html,因为本文是在windows下学习nginx,所以我们下载windows版本的ngxin,如下:
下载完之后,解压到对应的文件夹就行了,解压后目录结构如下:
启动nginx
1.打开cmd,进入nginx的目录,启动nginx命令:start nginx,启动后在浏览器输入localhost,如能见到下图,证明启动成功。
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写上一句不同的话表示不同。如图:
之后打开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
2.访问www.zzt.com
3.访问www.zzt.org
4.访问www.zztzzt.cn
5.访问www.zztzzt.com
6.访问www.jams.com
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
再访问127.0.0.1:8081
两个服务返回的字符串不同以示区别。
**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次访问:
第2次访问:
第3次访问:
反复多次访问之后发现,配置确实是成功了。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:
访问localhost/test2:
上面的配置只是将请求转发到被代理的服务器,访问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
这样子配置就实现了访问localhost/test1,其实就是访问127.0.0.1:8080了。访问localhost/test1/test1就是访问127.0.0.1:8080/test1。