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

相关推荐
七夜zippoe2 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy6484 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满4 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠4 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9034 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技6 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀6 小时前
Linux环境变量
linux·运维·服务器
zzzsde6 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º8 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~8 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化