1. nginx简介
nginx(发音同engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,
中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
2. nginx的特性与优点
2.1 nginx的特性
Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接
高度的模块化和自由软件许可证是的第三方模块层出不穷(这是个开源的时代啊~)
Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris, AIX,Mac OS等操作系统上
这些优秀的设计带来的极大的稳定性
2.2 nginx的优点
高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数
内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M)
配置文件非常简单:风格跟程序一样通俗易懂
成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组
内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问
节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头
稳定性高:用于反向代理,宕机的概率微乎其微
模块化设计:模块可以动态编译
外围支持好:文档全,二次开发和模块较多
支持热部署:可以不停机重载配置文件
支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化
3. nginx反向代理
多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。
此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
3.1 反向代理的作用
保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
负载均衡,通过反向代理服务器来优化网站的负载
3.2 正向代理和反向代理的区别
在正向代理中,Proxy和Client同属于一个LAN(图中方框内),隐藏了客户端信息;
在反向代理中,Proxy和Server同属于一个LAN(图中方框内),隐藏了服务端信息;
4. nginx的安装与配置
4.1 nginx的安装
//创建系统用户nginx
[root@192 ~]# groupadd -r nginx
[root@192 ~]# useradd -r -M -s /sbin/nologin -g nginx nginx
//安装依赖环境
[root@192i ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ 暗转过程省略...... [root@@192 ~]# yum -y groups mark install 'Development Tools' 安装过程省略......
/创建日志存放目录
[root@@192 ~]# mkdir -p /var/log/nginx [root@@192 ~]# chown -R nginx.nginx /var/log/nginx/
//下载nginx,下载过程省略,存放至/usr/src目录下
[root@192 src]# wget http://nginx.org/download/nginx-1.12.0.tar.gz [root@192 ~]# ls /usr/src/ |grep nginx
//编译安装nginx
[root@@192 src]# tar xf nginx-1.12.0.tar.gz [root@192 src]# cd nginx-1.12.0 [root@192 nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log //安装过程省略.... [root@xaii nginx-1.12.0]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install //-j是指定多少内核 //过程省略......
4.2 nginx安装后的配置
//添加环境变量
[root@192 ~]# vim /etc/profile.d/nginx.sh [root@192 ~]# cat /etc/profile.d/nginx.sh export PATH=/usr/local/nginx/sbin:$PATH [root@192 ~]# . /etc/profile.d/nginx.sh
检查配置文件 输入版本信息
//指定配置文件的路径 需要拷贝两个文件:nginx.conf和mime.type至新的路径
cd /usr/local/nginx/conf^C [root@192 conf]# cp -a nginx.conf /opt/nginx/ [root@192 conf]# cp -a mime.types /opt/nginx [root@192 /]# ps -ef |egrep -v 'grep'|grep nginx root 31789 1 0 12:31 ? 00:00:00 nginx: master process nginx nobody 31794 31789 0 12:31 ? 00:00:00 nginx: worker process
//nginx和apache不能同时开启
//因为apache和nginx的端口都是80,当apache服务开启时,无法开始nginx服务
原文链接: https://blog.csdn.net/weixin_43695104/article/details/88034435