nginx相关配置、反向代理、负载均衡等
一、什么是Nginx
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
1.1应用场景
1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
二、Nginx安装
详见:Nginx详细安装过程-菜鸟教程
安装关键点和命令
1.解压:
tar -zxvf xxx.tar.gz
2.、安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
3.编译安装
[root@bogon pcre-8.35]# ./configure
[root@bogon pcre-8.35]# make && make install
三、nginx简单命令
进入/usr/local/nginx/sbin
1.启动nginx
[root@localhost sbin]# ./nginx
2.关闭nginx:
[root@localhost sbin]# ./nginx -s stop
推荐使用:
[root@localhost sbin]# ./nginx -s quit
3.重启nginx:
1、先关闭后启动。
2、刷新配置文件:
[root@localhost sbin]# ./nginx -s reload
最后访问nginx,默认80端口
注意放行端口
四、firewall防火墙简单用法
1.永久开放端口
firewall-cmd --add-port=8080/tcp --permanent
2.重新加载生效开放的端口
firewall-cmd --reload
3.其他相关命令
systemctl start firewalld
# 启动
systemctl enable firewalld
# 开机启动
systemctl stop firewalld
# 关闭
systemctl disable firewalld
# 取消开机启动
4.查看所有打开的端口:
firewall-cmd --zone=public --list-ports
firewall-cmd --list-all
五、nginx配置虚拟机
就是在一台服务器启动多个网站。
如何区分不同的网站:
1、域名不同
2、端口不同
5.1通过端口区分不同虚拟机
Nginx的配置文件:
/usr/local/nginx/conf/nginx.conf
重新加载配置文件
[root@localhost nginx]# sbin/nginx -s reload
5.2 通过域名区分虚拟主机
本地测试可以修改hosts文件。
修改window的hosts文件:(C:\Windows\System32\drivers\etc
)
可以配置域名和ip的映射关系,如果hosts文件中配置了域名和ip的对应关系,不需要走dns服务器。
nginx配置
server {
listen 80;
server_name www.taobao.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-taobao;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.baidu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-baidu;
index index.html index.htm;
}
}
}
域名的配置:
192.168.25.148 www.taobao.com
192.168.25.148 www.baidu.com
六、反向代理
6.1 Nginx实现反向代理
两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。
两个域名是www.sian.com.cn
和www.sohu.com
nginx服务器使用虚拟机192.168.101.3
第一步:安装两个tomcat,分别运行在8080和8081端口。
第二步:启动两个tomcat。
第三步:反向代理服务器的配置
upstream `tomcat1` {
server `192.168.25.148:8080`;
}
server {
listen 80;
server_name www.sina.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass `http://tomcat1`;
index index.html index.htm;
}
}
upstream `tomcat2` {
server `192.168.25.148:8081`;
}
server {
listen 80;
server_name www.sohu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass `http://tomcat2`;
index index.html index.htm;
}
}
第四步:nginx重新加载配置文件
第五步:配置域名
在hosts文件中添加域名和ip的映射关系
192.168.25.148
www.sina.com.cn
192.168.25.148
www.sohu.com
七、 负载均衡
如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。
upstream tomcat2 {
server `192.168.25.148:8081`;
server `192.168.25.148:8082`;
}
可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1
upstream tomcat2 {
server 192.168.25.148:8081;
server 192.168.25.148:8082 `weight=2`;
}
八、 动静分离
location `/html`{ #url访问路径
root `/www/wwwroot`; #文件所在实际路径
autoindex on; #是否在浏览器显示文件路径
}
location `/image`{
root `/www/wwwroot`;
autoindex on;
}
location / {
proxy_pass http://tomcat1;
root html;
index index.html index.htm;
}
autoindex on;
#是否在浏览器显示文件路径