1.什么是nginx
Nginx(“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,**并发**能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
官网地址:
http://nginx.org/
2.正向代理与反向代理
a.正向代理
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。正向代理“代理”的是客户端,而且客户端是知道目标的,而目标是不知道客户端是通过代理服务器访问的
例如:通过浏览器我们并不能直接访问谷歌,但是我们可以借助VPN来实现访问,其实这就是一个比较简单的正向代理的例子。
b.反向代理
客户端不需要任何配置就能访问,只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器,获取数据后再返回给客户端。对外就一个服务器,暴露的是反向代理服务器地址,隐藏了真实服务器IP地址。代理对象是服务端,不知道客户端是谁。
例如:当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的反向代理
3.nginx下载
a:添加官方nginx源
rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm
b:使用yum下载nginx
yum -y install nginx
yum方式安装nginx,它的安装根目录为/etc/nginx。
c:查看nginx版本:
rpm -qa | grep nginx
d:配置防火墙
将nginx默认访问端口80进入到防火墙中
firewall-cmd --zone=public --add-port=80/tcp --permanent &&
firewall-cmd --reload &&
firewall-cmd --list-port
# 启动nginx服务
systemctl start nginx
# 查询nginx服务启动状态
systemctl status nginx
启动成功后,在浏览器中输入访问地址,效果如下:
4.动静分离
Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起发布,通过Nginx来分开
虚拟域名配置
去本地路径
C:\Windows\System32\drivers\etc
设置虚拟域名
语法 端口号 虚拟域名
查看nginx日志
tail -f /var/log/nginx/error.log
5.反向代理
修改nginx核心配置文件/etc/nginx/conf.d
,配置nginx反向代理。
server {
listen 80;
server_name www.zking.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location ^~ /edu/ {
proxy_pass http://127.0.0.1:8080/;
}
location ^~ /zki/ {
proxy_pass http://127.0.0.1:8081/;
}
}
proxy_pass说明是动态请求,需要进行转发,比如代理到Tomcat上。
# 切换到nginx的日志目录
cd /var/log/nginx/
# 查看日志信息
tail -f error.log
解决方案:关闭SeLinux
setsebool -P httpd_can_network_connect 1
6.负载均衡
修改nginx核心配置文件/etc/nginx/conf.d
,配置nginx负载均衡
upstream tomcats{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
server {
listen 80;
server_name www.zking.com;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location ^~ /edu/ {
proxy_pass http://127.0.0.1:8080/;
}
location ^~ /api/ {
proxy_pass http://tomcats/;
}
}
第一,通过upstream来定义一组Tomcat,并指定负载策略(IPHASH、加权论调、最少连接),健康检查策略(Nginx可以监控这一组Tomcat的状态)等。 第二,将proxy_pass替换成upstream指定的值即可。