Nginx简介:

  • Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
  • Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
  • Nginx不但是一个优秀Web服务软件,还具有反向代理负载均衡功能和缓存服务功能,与lvs负载均衡及Haproxy等专业代理软件相比,Nginx部署起来更为简单,方便;在缓存功能方面,它又类似于Squid等专业的缓存服务软件。

Nginx相对于传统的Apache服务的优缺点:

  • (1) 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品;
  • (2) Nginx 配置简洁,Apach复杂;Nginx静态处理性能比Apache高3倍以上;Apache对PHP支持比较简单,Nginx需要配合其他后端用;Apache的组件比Nginx多;
  • (3) apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程;
  • (4) nginx处理静态文件好,耗费内存少,但apache目前也有它的优势,有很多丰富的特性,所以还需要搭配着来;当然如果能确定nginx就适合需求,那么使用nginx会是更经济的方式;
  • (5) nginx的负载能力比apache高很多,而且nginx改完配置能-t测试一下配置有没有问题,apache重启的时候发现配置出错了,会很崩溃,改的时候都会非常小心翼翼现在看有好多集群站,前端nginx抗并发,后端apache集群,配合的也不错;

Nginx模块化体系结构:

 

nginx的模块根据其功能基本上可以分为以下几种类型:

  • event module: 搭建了独立于操作系统的事件处理机制的框架,及提供了各具体事件的处理。包括ngx_events_module, ngx_event_core_module和ngx_epoll_module等。nginx具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。
  • phase handler: 此类型的模块也被直接称为handler模块。主要负责处理客户端请求并产生待响应内容,比如ngx_http_static_module模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。
  • output filter: 也称为filter模块,主要是负责对输出的内容进行处理,可以对输出进行修改。例如,可以实现对输出的所有html页面增加预定义的footbar一类的工作,或者对输出的图片的URL进行替换之类的工作。
  • upstream: upstream模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
  • load-balancer: 负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。

 Nginx进程流程:

  

Nginx 服务器,正常运行过程中:

  • 多进程:一个 Master 进程、多个 Worker 进程
  • Master 进程:管理 Worker 进程
    • 对外接口:接收外部的操作(信号)
    • 对内转发:根据外部的操作的不同,通过信号管理 Worker
    • 监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
  • Worker 进程:所有 Worker 进程都是平等的
    • 实际处理:网络请求,由 Worker 进程处理;
    • Worker 进程数量:在 nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU 资源,增加上下文切换的损耗。

以下是常见http功能模块:

http类模块名 模块功能说明
ngx_http_core_module http核心模块,对应配置文件中的http段,包含很多指令,如location指令
ngx_http_access_module 访问控制模块,控制网站用户对nginx的访问,对应于配置文件中的allow和deny等指令
ngx_http_auth_basic_module 通过用户名和密码认证的访问控制,如访问站点时需要数据用户名和密码,指令包括auth_basic和auth_basic_user_file
ngx_http_charset_module 设置网页显示字符集。指令之一为charset,如charset utf-8
ngx_http_fastcgi_module fastcgi模块,和动态应用相关。该模块下有非常多的子模块。
ngx_http_flv_module 支持flv视频流的模块,如边下边播
ngx_http_mp4_module 同flv模块
ngx_http_gzip_module 压缩模块,用来压缩nginx返回的响应报文。一般只压缩纯文本内容,因为压缩比例非常大,而图片等不会去压缩
ngx_http_image_filter_module 和图片裁剪、缩略图相关模块,需要安装gd-devel才能编译该模块
ngx_http_index_module 定义将要被作为默认主页的文件,对应指令为index。"index index.html,index.php"
ngx_http_autoindex_module 当index指令指定的主页文件不存在时,交给autoindex指令,将自动列出目录中的文件autoindex {on/off}  
ngx_http_log_module 和访问日志相关的模块,指令包括log_format和access_log
ngx_http_memcached_module 和memcached相关的模块,用于从memcached服务器中获取相应响应数据
ngx_http_proxy_module 和代理相关,允许传送请求到其它服务器
ngx_http_realip_module 当nginx在反向代理的后端提供服务时,获取到真正的客户端地址,否则获取的是反向代理的IP地址
ngx_http_referer_module 实现防盗链功能的模块
ngx_http_rewrite_module 和URL地址重写相关的模块,需要安装pcre-devel才能编译安装该模块
ngx_http_scgi_module simple cgi,是cgi的替代品,和fastcgi类似,但更简单
ngx_http_ssl_module 提供ssl功能的模块,即实现HTTPS
ngx_http_stub_status_module 获取nginx运行状态信息
ngx_http_upstream 和负载均衡相关模块

Nginx官方站点:

第一部分:CentOS7下使用YUM安装Nginx指定版本。

  1. # 准备环境
  2. [root@Server-01 ~]# cat /etc/redhat-release
  3. CentOS Linux release 7.5.1804 (Core)
  4. [root@Server-01 ~]# uname -a
  5. Linux Server-01 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
  6. [root@Server-01 ~]# uname -r
  7. 3.10.0-862.el7.x86_64
  8. [root@Server-01 ~]# setenforce 0
  9. [root@Server-01 ~]# systemctl stop firewalld
  10. [root@Server-01 ~]# hostname -I
  11. 172.16.70.37
  12.  
  13. # 安装nginx-1.14.2;目前(2021-07)最新版本为nginx-1.20.1
  14. [root@nginxServer ~]# rpm -ivh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm
  15. [root@nginxServer ~]# nginx -v
  16. nginx version: nginx/1.14.2
  17.  
  18. [root@nginxServer ~]# rpm -qa | grep nginx
  19. nginx-1.14.2-1.el7_4.ngx.x86_64
  20. [root@nginxServer ~]# rpm -ql nginx | less
  21. /etc/logrotate.d/nginx
  22. /etc/nginx         # 相关配置文件存放目录
  23. /etc/nginx/conf.d            
  24. /etc/nginx/conf.d/default.conf    
  25. /etc/nginx/fastcgi_params
  26. /etc/nginx/koi-utf
  27. /etc/nginx/koi-win
  28. /etc/nginx/mime.types
  29. /etc/nginx/modules
  30. /etc/nginx/nginx.conf
  31. /etc/nginx/scgi_params
  32. /etc/nginx/uwsgi_params
  33. /etc/nginx/win-utf
  34. /etc/sysconfig/nginx
  35. /etc/sysconfig/nginx-debug
  36. /usr/lib/systemd/system/nginx-debug.service
  37. /usr/lib/systemd/system/nginx.service
  38. /usr/lib64/nginx
  39. /usr/lib64/nginx/modules
  40. /usr/libexec/initscripts/legacy-actions/nginx
  41. /usr/libexec/initscripts/legacy-actions/nginx/check-reload
  42. /usr/libexec/initscripts/legacy-actions/nginx/upgrade
  43. /usr/sbin/nginx
  44. /usr/sbin/nginx-debug
  45. /usr/share/doc/nginx-1.14.2
  46. /usr/share/doc/nginx-1.14.2/COPYRIGHT
  47. /usr/share/man/man8/nginx.8.gz
  48. /usr/share/nginx
  49. /usr/share/nginx/html    # 默认站点存放目录
  50. /usr/share/nginx/html/50x.html
  51. /usr/share/nginx/html/index.html
  52. /var/cache/nginx
  53. /var/log/nginx        # 日志文件存放目录
  54.  
  55. -----------------------------------------------------------------------------
  56. # systemctl命令:
  57. 服务状态 systemctl status nginx
  58. 服务启动 systemctl start nginx
  59. 服务停止 systemctl stop nginx
  60. 服务重启 systemctl restart nginx
  61.  
  62. # nginx命令语法及参数:
  63. [root@nginxServer ~]# nginx -h
  64. nginx version: nginx/1.14.2
  65. Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
  66.  
  67. Options:
  68. -?,-h : this help
  69. -v : 输出版本号
  70. -V : 输出版本号以及编译选项
  71. -t : 检查配置文件的语法
  72. -T : 检查配置文件的语法并输出配置的内容
  73. -q : 静默模式,不输出任何信息
  74. -s signal : 向主进程发送信号:stop, quit, reopen, reload
  75. -p prefix : 设置nginxbasedir(默认为编译时的prefix)
  76. -c filename : 指定配置文件
  77. -g directives : 提前设置全局指令
  78. -------------------------------------------------------------------------------
  79. # 启动,并设置开机启动
  80. [root@nginxServer ~]# systemctl start nginx && systemctl enable nginx
  81. Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
  82.  
  83. [root@nginxServer ~]# ps -ef |grep nginx
  84. root 1466 1 0 16:54 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
  85. nginx 1467 1466 0 16:54 ? 00:00:00 nginx: worker process
  86. root 1486 1178 0 16:54 pts/0 00:00:00 grep --color=auto nginx
  87. [root@nginxServer ~]# netstat -nutlp | grep nginx
  88. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1466/nginx: master
  • Web检测测试效果。

  • Nginx默认配置文件解析:
  1. [root@nginxServer ~]# cat /etc/nginx/nginx.conf
  2.  
  3. user nginx;      # 配置用户或组
  4. worker_processes 1;      # worker允许生成的进程数
  5.  
  6. error_log /var/log/nginx/error.log warn;    # 制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
  7. pid /var/run/nginx.pid;    # 指定nginx进程运行文件存放位置
  8.  
  9. events {    # 事件区块
  10. worker_connections 1024;    # 每个worker进程支持的最大连接数
  11. }
  12.  
  13. http {    # http区块
  14. include /etc/nginx/mime.types;    # 支持的媒体类型库文件包含
  15. default_type application/octet-stream;    # 默认媒体类型
  16.  
  17. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  18. '$status $body_bytes_sent "$http_referer" '
  19. '"$http_user_agent" "$http_x_forwarded_for"';    
  20.  
  21. access_log /var/log/nginx/access.log main;    # 默认log格式
  22.  
  23. sendfile on;    # 允许sendfile方式传输文件,可以在http块,server块,location块
  24. #tcp_nopush on;
  25.  
  26. keepalive_timeout 65;   # 连接超时时间,可以在http块,server块,location块
  27.  
  28. #gzip on;
  29.  
  30. include /etc/nginx/conf.d/*.conf;  # 生效包含自定义配置
  31. }
  32.  
  33. [root@nginxServer nginx]# cat conf.d/default.conf
  34. server {    # 网站配置区域
  35. listen 80;  # 提供服务的端口,默认80
  36. server_name localhost;    # 提供服务的域名主机名
  37.  
  38. #charset koi8-r;
  39. #access_log /var/log/nginx/host.access.log main;
  40.  
  41. location / {    # location区块开始
  42. root /usr/share/nginx/html;    # 站点的根目录(相对与nginx安装目录)
  43. index index.html index.htm;    # 默认的首页文件,多个用空格分开
  44. }
  45.  
  46. #error_page 404 /404.html;    
  47.  
  48. # redirect server error pages to the static page /50x.html
  49. #
  50. error_page 500 502 503 504 /50x.html;    # 出现对应的http状态码时,使用50x.html回应客户
  51. location = /50x.html {      # location区块开始,访问50x.html
  52. root /usr/share/nginx/html;    # 指定对应的站点目录为html
  53. }
  54.  
  55. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  56. #
  57. #location ~ \.php$ {
  58. # proxy_pass http://127.0.0.1;
  59. #}
  60.  
  61. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  62. #
  63. #location ~ \.php$ {
  64. # root html;
  65. # fastcgi_pass 127.0.0.1:9000;
  66. # fastcgi_index index.php;
  67. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  68. # include fastcgi_params;
  69. #}
  70.  
  71. # deny access to .htaccess files, if Apache's document root
  72. # concurs with nginx's one
  73. #
  74. #location ~ /\.ht {
  75. # deny all;
  76. #}
  77. }
  78.  
  79. -----------------------------------------------------------
  80. # 整个nginx配置文件的核心框架如下
  81. worker_processes 1;
  82. events {
  83.  
  84. worker_connections 1024;
  85.  
  86. }
  87. http {
  88. include mime.types;
  89. server {
  90. listen 80;
  91. server_name localhost;
  92. location / {
  93. root html;
  94. index index.html index.htm;
  95. }
  96. }
  97. }

第二部分:设置虚拟主机。

  • nginx使用server容器定义一个虚拟主机。在nginx中,没有严格区分基于IP和基于名称的虚拟主机,它们通过listen指令和server_name指令结合起来形成不同的虚拟主机。
  1. # 配置文件目录结构
  2. [root@nginxServer ~]# tree /etc/nginx/
  3. /etc/nginx/
  4. ├── conf.d
  5. ├── default.conf
  6. ├── fastcgi_params
  7. ├── koi-utf
  8. ├── koi-win
  9. ├── mime.types
  10. ├── modules -> ../../usr/lib64/nginx/modules
  11. ├── nginx.conf
  12. ├── scgi_params
  13. ├── uwsgi_params
  14. └── win-utf
  15.  
  16. 2 directories, 10 files
  17.  
  18. 说明:其中".default"后缀的是对应前缀配置文件的备份配置文件,".params"是对应前缀的参数文件。
  19.  
  20. # 创建站点目录及站点内容
  21. [root@nginxServer ~]# for i in {1..3}; do mkdir -p /data/web/nginx/www$i; echo "Mysite-$i www$i.nginx.com" > /data/web/nginx/www$i/index.html; done
  22. [root@nginxServer ~]# tree /data/web/nginx/
  23. /data/web/nginx/
  24. ├── www1
  25. └── index.html
  26. ├── www2
  27. └── index.html
  28. └── www3
  29. └── index.html
  30.  
  31. 3 directories, 3 files
  32. [root@nginxServer ~]# cat /data/web/nginx/www*/*
  33. Mysite-1 www1.nginx.com
  34. Mysite-2 www2.nginx.com
  35. Mysite-3 www3.nginx.com
  36.  
  37. [root@nginxServer ~]# cd /etc/nginx/conf.d/
  38. [root@nginxServer conf.d]# mv default.conf default.conf_bak
  39.  
  40. # 新增虚拟主机配置文件
  41. [root@nginxServer conf.d]# vim vhosts.conf
  42. # 基于端口port
  43. server {
  44. listen 8081;
  45. server_name www1.nginx.com;
  46. location / {
  47. root /data/web/nginx/www1;
  48. index index.html index.htm;
  49. }
  50. error_page 500 502 503 504 /50x.html;
  51. location = /50x.html {
  52. root /data/web/nginx/www1;
  53. }
  54. }
  55.  
  56. server {
  57. listen 8082;
  58. server_name www2.nginx.com;
  59. location / {
  60. root /data/web/nginx/www2;
  61. index index.html index.htm;
  62. }
  63. error_page 500 502 503 504 /50x.html;
  64. location = /50x.html {
  65. root /data/web/nginx/www2;
  66. }
  67. }
  68.  
  69. # 基于域名FQDN
  70. server {
  71. listen 80;
  72. server_name www1.nginx.com;
  73. location / {
  74. root /data/web/nginx/www1;
  75. index index.html index.htm;
  76. }
  77. error_page 500 502 503 504 /50x.html;
  78. location = /50x.html {
  79. root /data/web/nginx/www1;
  80. }
  81. }
  82.  
  83. server {
  84. listen 80;
  85. server_name www3.nginx.com;
  86. location / {
  87. root /data/web/nginx/www3;
  88. index index.html index.htm;
  89. }
  90. error_page 500 502 503 504 /50x.html;
  91. location = /50x.html {
  92. root /data/web/nginx/www3;
  93. }
  94. }
  95.  
  96. #基于IP地址
  97. server {
  98. listen 80;
  99. server_name 172.16.70.37;
  100. location / {
  101. root /data/web/nginx/www2;
  102. index index.html index.htm;
  103. }
  104. error_page 500 502 503 504 /50x.html;
  105. location = /50x.html {
  106. root /data/web/nginx/www2;
  107. }
  108. }
  109.  
  110. server {
  111. listen 80;
  112. server_name 172.16.70.38;
  113. location / {
  114. root /data/web/nginx/www3;
  115. index index.html index.htm;
  116. }
  117. error_page 500 502 503 504 /50x.html;
  118. location = /50x.html {
  119. root /data/web/nginx/www3;
  120. }
  121. }
  122.  
  123. # 新增nginx状态信息配置文件
  124. [root@nginxServer conf.d]# vim status.conf
  125. # State information
  126.  
  127. server{
  128.  
  129. listen 80;
  130. server_name status.nginx.com;
  131. location / {
  132. stub_status on;
  133. access_log off;
  134. }
  135. }
  136.  
  137. # 基于域名,添加地址解析
  138. [root@nginxServer conf.d]# echo '172.16.70.37 www1.nginx.com www2.nginx.com www3.nginx.com status.nginx.com' >> /etc/hosts
  139.  
  140. # 基于IP,添加IP地址
  141. [root@nginxServer conf.d]# ip addr add 172.16.70.38/24 dev ens33
  142. [root@nginxServer conf.d]# ip addr | grep ens33
  143. 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  144. inet 172.16.70.37/24 brd 172.16.70.255 scope global noprefixroute dynamic ens33
  145. inet 172.16.70.38/24 scope global secondary ens33
  146. [root@nginxServer conf.d]# ping 172.16.70.38 -c2
  147. PING 172.16.70.38 (172.16.70.38) 56(84) bytes of data.
  148. 64 bytes from 172.16.70.38: icmp_seq=1 ttl=64 time=0.015 ms
  149. 64 bytes from 172.16.70.38: icmp_seq=2 ttl=64 time=0.059 ms
  150.  
  151. --- 172.16.70.38 ping statistics ---
  152. 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
  153. rtt min/avg/max/mdev = 0.015/0.037/0.059/0.022 ms
  154.  
  155. [root@nginxServer conf.d]# nginx -t    # 检测配置文件语法
  156. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  157. nginx: configuration file /etc/nginx/nginx.conf test is successful
  158.  
  159. [root@nginxServer conf.d]# nginx -s reload    # 重载nginx
  160. [root@nginxServer conf.d]# netstat -ntupl | grep nginx
  161. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1466/nginx: master
  162. tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 1466/nginx: master
  163. tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN 1466/nginx: master
  164.  
  165. # 检测测试结果
  166. [root@nginxServer conf.d]# hostname -I
  167. 172.16.70.37
  168. # 基于端口
  169. [root@nginxServer conf.d]# curl 172.16.70.37:8081
  170. Mysite-1 www1.nginx.com
  171. [root@nginxServer conf.d]# curl 172.16.70.37:8082
  172. Mysite-2 www2.nginx.com
  173. # 基于域名
  174. [root@nginxServer conf.d]# curl www1.nginx.com
  175. Mysite-1 www1.nginx.com
  176. [root@nginxServer conf.d]# curl www3.nginx.com
  177. Mysite-3 www3.nginx.com
  178. # 基于IP
  179. [root@nginxServer conf.d]# curl 172.16.70.37
  180. Mysite-2 www2.nginx.com
  181. [root@nginxServer conf.d]# curl 172.16.70.38
  182. Mysite-3 www3.nginx.com
  183.  
  184. # 显示状态结果
  185. [root@nginxServer conf.d]# curl status.nginx.com
  186. Active connections: 1
  187. server accepts handled requests
  188. 105 105 116
  189. Reading: 0 Writing: 1 Waiting: 0
  190.  
  191. 说明:
  192.   Active connections    当前nginx正处理的活动连接数
  193.   server           总共处理的连接数
  194.   accepts           成功创建握手次数
  195.   handled requests     总共处理请求数(平均每次握手处理了1.3个数据请求)        
  196.   Reading          nginx读取到客户端的Header信息数
  197.   Writing          nginx返回给客户端的Header信息数
  198.   Waiting          nginx已经处理完正在等候下一次请求指令的驻留连接。在开启keep-alive的情况下,这个值等于active - (reading+writing)

 第三部分:Nginx Web认证

  • 基于用户认证。即需要输入用户名和密码才能访问站点的功能为web身份认证功能。nginx中由ngx_http_auth_basic_module模块提供该功能。指令包括auth_basic和auth_basic_user_file。这两个指令可以在http根段、server段、location段使用。
  1. [root@nginxServer conf.d]# pwd
  2. /etc/nginx/conf.d
  3. [root@nginxServer conf.d]# vim vhosts.conf
  4. server {
  5. listen 80;
  6. server_name www1.nginx.com;
  7. location / {
  8. root /data/web/nginx/www1;
  9. index index.html index.htm;
  10. auth_basic "Auth your name";
  11. auth_basic_user_file /etc/nginx/.ngxpasswd;
  12. }
  13. error_page 500 502 503 504 /50x.html;
  14. location = /50x.html {
  15. root /data/web/nginx/www1;
  16. }
  17. }
  18.  
  19. # htpasswd命令由httpd-tools所提供
  20. [root@nginxServer conf.d]# yum install -y httpd-tools
  21. [root@nginxServer conf.d]# htpasswd -c -b -m /etc/nginx/.ngxpasswd user1 user1
  22. Adding password for user user1
  23. [root@nginxServer conf.d]# htpasswd -b -m /etc/nginx/.ngxpasswd user2 user2
  24. Adding password for user user2
  25.  
  26. 说明:
  27.  -c表示创建密码文件,只能为第一个用户使用该选项,否则后面使用会覆盖前面已经创建过的
  28.  -b选项是表示batch模式,不用交互输入密码
  29.  -m表示强制使用md5
  30.  
  31. [root@nginxServer conf.d]# cat /etc/nginx/.ngxpasswd
  32. user1:$apr1$MaM8PAS.$FjeZesqyESHjUyUarao.q/
  33. user2:$apr1$3Tvnt.Kp$ysOph6mgMyTHaqgLy6fsH1
  34.  
  35. [root@nginxServer conf.d]# nginx -t
  36. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  37. nginx: configuration file /etc/nginx/nginx.conf test is successful
  38. [root@nginxServer conf.d]# nginx -s reload
  • 检测测试结果。

  WIN10的hosts文件添加解析:将'172.16.70.37 www1.nginx.com www2.nginx.com www3.nginx.com'添加到C:\Windows\System32\drivers\etc\hosts

Nginx访问日志轮询切割:

  • 默认情况下Nginx会把所有的访问日志生成到一个指定的访问日志文件access.log里,但这样一来,时间长了就会导致日志个头很大,不利于日志的分析和处理,因此,有必要对Nginx日志,按天或按小时进行切割,使其分成不同的文件保存。
  1. [root@nginxServer nginx]# pwd
  2. /etc/nginx
  3.  
  4. [root@nginxServer nginx]# cat cut_nginx_log.sh
  5. #!/bin/bash
  6. #日志切割脚本可挂定时任务,每天00点整执行
  7.  
  8. Dateformat=`date +%Y%m%d`
  9. Nginxlogdir="/var/log/nginx"
  10. Logname="access"
  11.  
  12. [ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1
  13. [ -f ${Logname}.log ] || exit 1
  14. /usr/bin/mv ${Logname}.log ${Logname}.log_${Dateformat}
  15. /usr/sbin/nginx -s reload
  16.  
  17. # 新增计划任务
  18. [root@nginxServer nginx]# cat /etc/cron.d/cut_nginx_log.cron
  19. #cut nginx access log
  20. 00 00 * * * root /usr/bin/bash /etc/nginx/cut_nginx_log.sh >/dev/null 2>&

Linux下Nginx基础应用的更多相关文章

  1. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  2. VMware Linux 下 Nginx

    负载   VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三) Weiseditor 2014-11-26 23:42 阅读:1 评论 ...

  3. VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三)

    首先启动Nginx 1. 相关浏览 两个 Tomcat 配置:  VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二) Nginx 安装配置启动: VMware Linu ...

  4. VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二)

    准备工作 相关浏览: VMware Linux 下 Nginx 安装配置 (一) 1. 选在 /usr/local/ 下创建 softs 文件夹,通过 ftp 命令 把 apache-tomcat-7 ...

  5. Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # y ...

  6. linux下nginx+php+mysql 自助环境搭建

    ++++++++++++++++++++++++++++++++++++++++++++++linux下nginx+php+mysql环境搭建+++++++++++++++++++++++++++++ ...

  7. linux下nginx结合keepalived实现主从切换的配置

    linux下nginx结合keepalived实现主从切换的配置   解决方法: 实现一个主nginx宕机,请求转到另一个nginx中. 1.确保两台nginx已启动,假如端口分别是192.168.0 ...

  8. linux下nginx服务器域名指定目录

    一般,域名指定ip之后,需要在ip所在的机器去指定相应站点的目录,否则域名会不起作用: 下面说说linux下的nginx服务器指定目录的细节: 域名绑定目录的配置文件都放到这里: /usr/local ...

  9. Linux下Nginx的安装与配置

    安装前需要安装pcre:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/1.解压缩:     tar xjpf pcre-7.8.tar.b ...

随机推荐

  1. Nginx为什么能快到根本停不下来?

    Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名.本文从底层原理分析 Nginx 为什么这么快! Nginx 的进程模型 Nginx 服务器,正常运行过程中: 多进程:一个 M ...

  2. 支持向量机(SVM)之硬阈值

    支持向量机 ( support vector machine, SVM ) 是使用超平面来对给定的 p 维向量进行分类的非概率二元线性分类器. 一.超平面 ( hyperplane ) 在一个p维的输 ...

  3. Golang学习(用代码来学习) - 第四篇

    /** 一个用来进行go routine的函数 */ func print_something(msg string){ for i:= 0;i < 5;i++{ time.Sleep(1 * ...

  4. excel VBA构造正则函数(单参数)

    Function zhengze(Rng As Range)    Set regx = CreateObject("vbscript.regexp")With regx  .Gl ...

  5. 『心善渊』Selenium3.0基础 — 17、Selenium操作浏览器窗口的滚动条

    目录 1.为什么操作滚动条 2.Selenium如何操作滚动条 3.Selenium操作滚动条方法 4.操作滚动条示例 5.下拉至聚焦元素的位置 (1)实现步骤: (2)实现示例: 1.为什么操作滚动 ...

  6. 查看JVM中的线程名

    实例说明 在Java虚拟机中(JVM):除了用户创建的线程,还有服务于用户线程的其他线程.它们根据不同的用途被分到不同的组中进行管理.本实例将演示JVM中线程的名字及其所在组的名称. 关键技术 线程组 ...

  7. sqlite用法总结

    p.p1 { margin: 0; font: 16px "Helvetica Neue"; color: rgba(0, 0, 255, 1) } p.p2 { margin: ...

  8. Redis数据库 常用的基本操作

    一.redis数据库操作 redis数据库默认有16个数据库[0-15],默认进入的是0库. select  数据库名 :切换数据库. keys  * :查看所有的键. expire 键 秒数:设置过 ...

  9. s3cmd的使用

    目录 1. 安装s3cmd 2. 配置s3cmd 3. 使用s3cmd [前言] s3cmd 是用于创建S3桶,上传,检索和管理数据到对象存储命令行实用程序. 本文将指导linux下安装s3cmd程序 ...

  10. sort,wc,uniq 排序与统计命令

    sort命令 语法:sort [parameter] [file or stdin]参数: -f:忽略大小写的差异,例如A和a视为编码相同 -b:忽略最前面的空格符部分 -n:使用"纯数字& ...