nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,。其特点是占有内存少,并发能力强,处理静态请求的能力在众多的http service中算是佼佼者了,特别适用于访问量大,并发量高的网站。nginx本事只能处理静态的网页,如需要处理动态的网页需要借助其它的插件,或者应用容器:比如Tomcat,django...
在生产环境中,它一般不会作为主要的应用服务器,一般会作为用户访问的一个入口,接收用户的请求,通过反向代理把请求交给后端的应用服务器去处理。还可作动静分离,因为nginx处理静态网页的能力非常强,可以把静态的请求交给nginx,动态的请求交给处理动态网页的应用服务器。
一:nginx yum安装:
1、首先确保服务器连接网络:
[[email protected] ~]# ping bing.com -c 4 PING bing.com (204.79.197.200) 56(84) bytes of data. 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=1 ttl=111 time=39.9 ms 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=2 ttl=111 time=39.4 ms 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=3 ttl=111 time=39.9 ms 64 bytes from a-0001.a-msedge.net (204.79.197.200): icmp_seq=4 ttl=111 time=39.4 ms
2、设置yum源码:
使用官方的yum源: www.nginx.org
baseurl根据你的操作系统版本号写入:我的操作系统是centos/6版本
[[email protected] ~]# vi /etc/yum.repos.d/nginx.repo [[email protected] ~]# cat /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1
3、 yum安装nginx:
[[email protected] ~]# yum -y install nginx ##自动从nginx官网下载安装
4、nginx的配置文件:
nginx的主配置文件默认在/etc/nginx/nginx.conf
nginx的网页根目录默认在/usr/share/nginx/html/
[[email protected] ~]# rpm -qal |grep nginx ##查看所有nginx的相关文件 /etc/logrotate.d/nginx /etc/nginx /etc/nginx/conf.d /etc/nginx/conf.d/default.conf /etc/nginx/fastcgi_params /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/mime.types /etc/nginx/modules /etc/nginx/nginx.conf /etc/nginx/scgi_params /etc/nginx/uwsgi_params /etc/nginx/win-utf /etc/rc.d/init.d/nginx /etc/rc.d/init.d/nginx-debug /etc/sysconfig/nginx /etc/sysconfig/nginx-debug /usr/lib64/nginx /usr/lib64/nginx/modules /usr/sbin/nginx /usr/sbin/nginx-debug /usr/share/doc/nginx-1.12.1 /usr/share/doc/nginx-1.12.1/COPYRIGHT /usr/share/man/man8/nginx.8.gz /usr/share/nginx /usr/share/nginx/html /usr/share/nginx/html/50x.html /usr/share/nginx/html/index.html /var/cache/nginx /var/log/nginx
5、启动nginx服务:
[[email protected] ~]# /etc/init.d/nginx start 正在启动 nginx: [确定] ##查看监听端口,默认监听80端口 [[email protected] ~]# netstat -utpln |grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 16720/nginx
6、访问测试:
linux下测试:
[[email protected] ~]# elinks --dump 192.168.100.150 Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to [1]nginx.org. Commercial support is available at [2]nginx.com. Thank you for using nginx. References Visible links 1. http://nginx.org/ 2. http://nginx.com/
windows下访问:
二:编译安装nginx:
1、获取nginx源码包:
在官网下载指定版本的nginx源码包 http://nginx.org/download/
[[email protected] ~]# wget http://nginx.org/download/nginx-1.6.3.tar.gz --2017-08-29 19:34:13-- http://nginx.org/download/nginx-1.6.3.tar.gz 正在解析主机 nginx.org... 95.211.80.227, 206.251.255.63, 2001:1af8:4060:a004:21::e3, ... 正在连接 nginx.org|95.211.80.227|:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:805253 (786K) [application/octet-stream] 正在保存至: “nginx-1.6.3.tar.gz” 。。。。。。 2017-08-29 19:34:30 (47.5 KB/s) - 已保存 “nginx-1.6.3.tar.gz” [805253/805253])
[[email protected] ~]# ls anaconda-ks.cfg install.log install.log.syslog nginx-1.6.3.tar.gz
2、解压源码包:
[[email protected] ~]# tar zxf nginx-1.6.3.tar.gz #查看解药后的源码 [[email protected] ~]# ls anaconda-ks.cfg install.log install.log.syslog nginx-1.6.3 nginx-1.6.3.tar.gz [[email protected] ~]# cd nginx-1.6.3 [[email protected] nginx-1.6.3]# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
3、创建用户:
[[email protected] ~]# useradd -M -s /sbin/nologin nginx [[email protected] ~]# id nginx uid=500(nginx) gid=500(nginx) 组=500(nginx)
4、安装依赖包:
yum -y install pcre-devel
5、编译安装:
编译时候可以加载模块实现对应的功能,模块功能:
以下介绍引用自:http://www.cnblogs.com/liangml/p/5972470.html
1.通用配置选项: --prefix=<path> 指定Nginx的安装路径,所有其他的路径都要依赖于该选项 --sbin-path=<path> 指定Nginx二进制文件的路径。如果没有指定,那么这个路径将依赖于--prefix选项 --conf-path=<path> 指定Nginx的配置文件的路径,如果在命令行没有指定配置文件,那么将会通过这里指定路径。 --error-log-path=<path> 指定错误日志文件路径,Nginx将会往里面写入错误日志文件,除非有其它的配置。 --pid-path=<path> 指定的Nginx master进程的PID文件位置,通常在/var/run下 --lock-path=<path> 共享存储器互斥锁文件的路径 --user=<user> worker进程运行的用户 --group=<group> worker进程运行的组 --with-file-aio. 为FreeBSD4.3 +和linux 2.6.22 +系统启用异步I/O --with-debug 这个选项用于启用调试日志,在生产环境的系统中不推荐使用 2. 邮件代理的配置选项: --with-mail 该选项用于启用Mail模块,该模块默认没有被激活 --with-mail_ssl_module 为了代理任何一种类型的使用SSL/TLS的Mail,激活该模块 --without-mail_pop3_module 在启用Mail模块后,单独地禁用pop3模块 --without-mail_imap_module 再启用mail模块后,单独地禁用IMAP模块 --without-mail_smtp_module 在启用mail模块后,单独地禁用smtp模块 --without--http 该选项将完全禁用http模块,如果你只想支持 3. 指定路径的配置选项: --without-http_perl_module Nginx配置能够使用扩展使用Perl代码,这个选项启用这个模块(此模块会降低性能) --without-perl_module_path=<path> 对于额外嵌入的Perl模块,使用该选项指定该Perl解析器的路径,也可以通过配置选项来指定Perl模块解析器的位置 --without—perl=<path> 如果在默认路径中没有找到Perl,那么指定Perl的路径 --http-log-path=<path> Http访问日志的默认路径 --http-client-body-temp-path=<path> 从客户端收到请求后,该选项设置的目录用于作为请求体临时存放的目录。如果WebDAV模块启用,那么推荐设置该路径为同一文件系统上的目录作为最终的目的地 --http-proxy-temp-path=<path> 在使用代理后,通过该选项设置存放临时文件路径 --http-fastcgi-temp-path=<path> 设置FastCGI临时文件的目录 --http-uwsgi-temp-path=<path> 设置uWSGI临时文件的目录 --http-scgi-temp-path=<path> 设置SCGI临时文件的目录 4. 各种模块配置选项: --with-http_ssl_module 如果需要对流量进行加密,可以使用该选项,在URLs中开始部分将会是https(需要OpenSSL库) --with-http_realip_module 如果你的Nginx在七层负载均衡器或者是其他设备之后,它们将http头中的客户端IP地址传递,那么你将会需要启用这个模块。在多个客户处于一个IP地址的情况下使用 --with-http_addition_module 这个模块作为输出过滤器,使你能够在请求经过一个location前或者后时在该location本身添加内容 --with-http_xslt_module 该模块用于处理XML响应转换,基于一个或者多个XSLT格式(需要libxml2和libxslt库) --with-http_image_filter_module 该模块被作为图像过滤器使用,在将图形投递到客户之前进行处理(需要libgd库) --with-http_geoip_module 使用该模块,能够设置各种变量以便在配置文件中区段使用,基于地理位置查找客户端IP地址(需要MaxMfind GeoIP库和相应的预编译数据库文件) --with-http_sub_module 该模块实现了替代过滤,在响应中用一个字符串替代另一个字符串 --with-http_dav_module 启用这个模块将激活使用WebDAV的配置指令。注意:这个模块也只在有需要使用的基础上启用,如果配置不正确,它将带来安全问题。 --with-http_flv_module 如果需要提供Flash流媒体视频文件,那么该模块将会提供伪流媒体 --with-http_mp4_module 这个模块支持H.264/AAC文件伪流媒体 --with-http_gzip_module 当被调用的资源没有.gz结尾格式的文件时,如果想支持发送预压缩版本的静态文件,那么使用该模块 --with-http_gunzio_module 对应不支持gzip编码的客户,该模块用于为客户解压缩预压缩内容 --with-http_random_index_module 如果你想提供从一个目录中随机选择文件的索引文件,那么这个模块需要被激活 --with-http_secure_link_module 该模块提供了一个机制,它会将一个哈希值链接到一个URL中,因此,只有那些使用正确的密码能够计算链接 --with-http_stub_status_module 启用这个模块后会收集Nginx自身的状态信息。输出的状态信息可以使用RRDtool或类似的东西来绘制成图 |
指定安装目录,指定运行nginx的用户和组,加载模块实现功能,我在这里就加载模块了
[[email protected] ~]# cd nginx-1.6.3 [[email protected] nginx-1.6.3]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[[email protected] nginx-1.6.3]# make &&make install
nginx安装目录下分别是nginx的配置文件目录 网页根目录 日志目录 运行命令目录
[[email protected] ~]# ls /usr/local/nginx/ conf html logs sbin
6、优化nginx管理:
nginx的启动文件在/usr/local/nginx/sbin/下,
[[email protected] ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ #给nginx命令目录作连接到系统变量里,这样在任何位置都可以执行nginx的命令了。 [[email protected] ~]# nginx -h ##nginx 命令用法帮助 nginx version: nginx/1.6.3 Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /usr/local/nginx/) -c filename : set configuration file (default: conf/nginx.conf) -g directives : set global directives out of configuration file
作以上操作就是为了实现将下面一条命令,简化为一个命令
[[email protected] ~]# /usr/local/nginx/sbin/nginx
[[email protected] ~]# nginx
7、启动nginx并测试:
[[email protected] ~]# elinks --dump 192.168.100.150
Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to [1]nginx.org. Commercial support is available at [2]nginx.com. Thank you for using nginx. References Visible links 1. http://nginx.org/ 2. http://nginx.com/
8、关闭nginx:
nginx编译没有自带关闭的程序,
可以使用kill + nginx的pid号: 先查看nginx的pid号,然后kill 杀掉查到的nginx的主进程和工作进程的pid
[[email protected] ~]# ps aux |grep nginx root 22012 0.0 0.1 24260 784 ? Ss 20:11 0:00 nginx: master process nginx nginx 22013 0.0 0.2 24684 1368 ? S 20:11 0:00 nginx: worker process root 22015 0.0 0.1 103248 872 pts/0 S+ 20:11 0:00 grep nginx [[email protected] ~]# kill -9 22012 22013 [[email protected] ~]# ps aux |grep nginx root 22017 0.0 0.1 103248 872 pts/0 S+ 20:11 0:00 grep nginx
使用killall nginx 结束nginx所有进程
[[email protected] ~]# nginx [[email protected] ~]# ps aux |grep nginx root 22019 0.0 0.1 24260 784 ? Ss 20:12 0:00 nginx: master process nginx nginx 22020 0.0 0.2 24684 1368 ? S 20:12 0:00 nginx: worker process root 22022 0.0 0.1 103248 872 pts/0 S+ 20:12 0:00 grep nginx [[email protected] ~]# killall nginx [[email protected] ~]# ps aux |grep nginx root 22025 0.0 0.1 103248 868 pts/0 S+ 20:12 0:00 grep nginx
9、编写脚本,管理nginx启动、关闭、重启、重读配置、查看状态等操作
[[email protected] ~]# vi /etc/init.d/nginx #!/bin/bash # chkconfig: - 99 20 # description: Nginx Server Control Script NP="/usr/local/nginx/sbin/nginx" NPF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) $NP; if [ $? -eq 0 ] then echo "nginx is starting!! " fi ;; stop) kill -s QUIT $(cat $NPF) if [ $? -eq 0 ] then echo "nginx is stopping!! " fi ;; restart) $0 stop $0 start ;; reload) kill -s HUP $(cat $NPF) if [ $? -eq 0 ] then echo "nginx config file is reload! " fi ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac exit 0
授与执行权限,添加到系统服务
[[email protected] ~]# chmod +x /etc/init.d/nginx [[email protected] ~]# chkconfig --add nginx
测试脚本。
(在使用脚本的时候,必须要合法,比如说nginx未启动才能启动,nginx启动了才能重启,要不然会报错误。)
[[email protected] ~]# /etc/init.d/nginx start nginx is starting!! [[email protected] ~]# /etc/init.d/nginx stop nginx is stopping!! [[email protected] ~]# /etc/init.d/nginx start nginx is starting!! [[email protected] ~]# /etc/init.d/nginx restart nginx is stopping!! nginx is starting!! [[email protected] ~]# /etc/init.d/nginx reload nginx config file is reload!
END