nginx


Nginx

概念

nginx(engine x)隐形X
属于高性能web反向代理服务器,同样也是高性能http服务器,同时还是IMAP/POP3/SMTP邮件服务器
功能丰富,且稳定,由C语言编写,距离操作系统较近,运行速度较快,消耗资源少,属于轻量级服务,支持高并发(50000)


与apache对比

1)nginx占用资源少,支持更多的并发连接,效率更高,如果一个成熟的nginx服务器,可以提供5W的并发连接响应
2)负载均衡服务器
nginx支持php,可以作为httpd代理服务器进行服务,用C语言编写,效率比apache要快
3)作为邮件代理服务器
nginx最早作为邮件服务器使用,性能高于apache
4)安装简单 在7*24小时高可用状态下,可以进行平滑升级(版本升级)


nginx在企业中的应用

最多用于反向代理和负载均衡服务器,还可以用作web服务器,还可以提供前端缓存服务(proxy_cache)

安装nginx

yum -y install pcre*
yum -y install openssl*

pcre工具:为了支持rewrite,实现url的重定向,根据正则表达式进行内容跳转,跳转到指定的目标
openssl:如果在数据进行传输的过程中没有加密认证,发送的数据很容易被抓包工具获取,容易暴露信息,openssl用于使用证书将传送的数据进行加密,保证数据安全,通常要去网站配置ssl证书,实现https协议。

nginx官网下载

tar zxf nginx-1.6.0.tar.gz -C /usr/src            #解压nginx源码包
cd /usr/src/nginx-1.6.0/        #进入nginx的解压目录进行配置编译
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre
#进行编译前的配置
make && make install        #编译安装
useradd nginx        #创建nginx程序用户nginx
ln -s /usr/local/nginx/sbin/nginx /usr/sbin        #优化nginx命令的路径

nginx默认使用80端口(与apache冲突)
nginx的configure配置项释义

--prefix=/usr/local/nginx     #指定nginx安装路径
--user=nginx         #指定nginx程序用户
--group=nginx         #指定nginx程序组用户
--with-http_ssl_module         #支持https加密模块
--with-http_spdy_module     #支持谷歌spdy(谷歌基于会话层的新协议,提高网速,减少网络延迟,加速网络传输,压缩请求头部)
--with-http_stub_status_module     #支持nginx状态检查
--with-pcre        #支持pcre重写功能(url重写)

修改nginx配置文件的基本配置

vim /usr/local/nginx/conf/nginx.conf
添加
#user  nginx nginx;        #指定运行程序的用户和组,这里的注释不需要去掉
nginx -t    #nginx检测配置文件语法的命令,显示下图则没有问题,否则会报配置文件哪行出错
nginx      #启动服务

1

此时就可以直接使用linux的浏览器访问本机ip
2

nginx配置文件释义

vim /usr/local/nginx/conf/nginx.conf

worker_processes  1;        //开启nginx工作进程的数量(cpu核心数,几核可以写几)
#error_log  logs/error.log;        
#error_log  logs/error.log  notice;    
#error_log  logs/error.log  info;    //错误日志路径
#pid        logs/nginx.pid;        //nginx进程号路径

events {        
    worker_connections  1024;    //一个进程可以处理多少请求
}

http {        //全局模块
    include       mime.types;        //文件扩展名和文件映射表
    default_type  application/octet-stream;    //默认文件类型
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request"'
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';    //定义日志的信息
$remote_addr和$http_x_forwarded_for    记录客户端的ip地址
$remote_user    记录客户端用户名
$time_local    记录来访时间和时区
$request     记录请求的url和http协议
$status        记录请求状态(状态码)
$body_bytes_sent记录发送给客户端文件主体内容
$http_referer    记录从哪个页面链接进行跳转(访问到此服务器)
$http_user_agent记录客户端浏览器的信息
    #access_log  logs/access.log  main;    
    sendfile        on;
#tcp_nopush     on; 

#keepalive_timeout  0; 
keepalive_timeout  65;        //保持会话时间,单位s

#gzip  on;

server {        //
    listen       80;        //设置服务的监听端口
    server_name  localhost;        //配置域名信息,一个server{}对应一个域名

    #charset koi8-r;    //字符集

    #access_log  logs/host.access.log  main;

    location / {            //表示跳转,当前写的location后有/,表示如果在地址栏输入的网址为根目录的默认ip或者域名,直接将连接跳转到location中设置的页面上
        root   html;        //设置网站根目录,默认当前目录/usr/local/nginx/html
        index  index.html index.htm;    //配置索引文件    
    }    

nginx常用命令

nginx:启动nginx服务
nginx -t :检测语法问题
nginx -s :停止nginx服务
nginx -s reload :重新加载nginx

Nginx平滑升级

可以在不间断服务器的前提下进行版本的升级,叫做平滑升级(热升级)
确保有更新版本的nginx服务器
确保有nginx旧版本
确保nginx正在运行

[root@localhost ~]# tar zxf nginx-1.14.2.tar.gz -C /usr/src        //解压新版本
[root@localhost ~]# cd /usr/src/nginx-1.14.2/
[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@localhost nginx-1.14.2]# make        //只需要make,不需要make install
[root@localhost nginx-1.14.2]# mv /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx_old    //将旧版本的nginx启动命令转移走 
[root@localhost nginx-1.14.2]# cd objs/
[root@localhost objs]# cp nginx /usr/local/nginx/sbin/        //将新版本的nginx命令脚本移动到nginx的管理命令目录下
[root@localhost objs]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`        //杀死旧版本的进程号,运行新版本的进程号,旧的进程处理完当前的请求后,新版本接替旧版本
[root@localhost ~]# nginx -v        //查看nginx版本,已经更新

编写nginx脚本的目的

将脚本放入/etc/init.d/下,可以将nginx服务添加到服务项中,使用systemctl进行管理
方便nginx的使用,将nginx进行更直观的操作,start|stop|restart

[root@localhost ~]# vim /etc/init.d/nginx        //建立脚本文件
添加
#!/bin/bash
#chkconfig:- 99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
        start)
        $PROG
;;
        stop)
        kill -s QUIT $(cat $PIDF)
;;
        restart)
        $0 stop
        $0 start
;;
        reload)
        kill -s HUP $(cat $PIDF)
;;
        *)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
exit 0

将编写的脚本添加为系统服务,可以使用systemctl进行管理服务的启动,停止

[root@localhost ~]# chmod +x /etc/init.d/nginx     //给予nginx脚本可执行权限
[root@localhost ~]# chkconfig --add nginx        //将nginx添加为系统服务
现在就可以通过systemctl 进行管理nginx服务
[root@localhost ~]# systemctl start nginx        //启动服务

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0