Nginx(负载均衡,反向代理)

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指定的值即可。

相关推荐
Zfox_16 分钟前
【Linux】进程信号全攻略(二)
linux·运维·c语言·c++
安於宿命21 分钟前
【Linux】简易版shell
linux·运维·服务器
追梦不止~28 分钟前
Docker常用命令+详解
运维·docker·容器
黑龙江亿林等保32 分钟前
深入探索哈尔滨二级等保下的负载均衡SLB及其核心算法
运维·算法·负载均衡
黄小耶@33 分钟前
linux常见命令
linux·运维·服务器
叫我龙翔34 分钟前
【计网】实现reactor反应堆模型 --- 框架搭建
linux·运维·网络
古驿幽情36 分钟前
CentOS AppStream 8 手动更新 yum源
linux·运维·centos·yum
BillKu37 分钟前
Linux(CentOS)安装 Nginx
linux·运维·nginx·centos
BillKu40 分钟前
Linux(CentOS)yum update -y 事故
linux·运维·centos
a266378961 小时前
解决yum命令报错“Could not resolve host: mirrorlist.centos.org
linux·运维·centos