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

相关推荐
PHOSKEY22 分钟前
闪测仪应用案例丨手机中框如何突破「尺寸检测」瓶颈?
运维·智能手机·自动化
JIAKSK1 小时前
VitePress 接入百度统计:全面教程与优化指南
运维·数据可视化
网硕互联的小客服1 小时前
未来趋势:AI与量子计算对服务器安全的影响
运维·服务器·网络·网络安全·量子计算
宇钶宇夕1 小时前
STEP 7 MicroWIN SMART V2.2 的详细安装步骤及注意事项
运维·服务器·程序人生·自动化
czhc11400756632 小时前
Linux 77 FTP
linux·运维·服务器
天若有情6733 小时前
【Linux】02_CentOS 7 开机运行级别详解:从基础概念到实战配置
linux·运维·centos
張萠飛3 小时前
Linux中程序的limits中的Max open files的配置由哪些参数决定
linux·运维·服务器
一心09210 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上10 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
你想考研啊11 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins