关于nginx,你不可不知的几大特色功能

nginx,轻量级的http服务与反向代理服务器软件,由于其并发能力较强,并且体积很小,所以被称为轻量级http服务软件。

nginx的特色功能有:

(1).URL rewrite:URL重写

(2).reverse proxy:反向代理

(3). 做缓存服务器

(4). 实现对web服务的负载均衡

(5). 安装第三方插件,实现健康状态监测

(6).其他功能(这里不一一列举了)

本实验示意图如下:

说明:本实验是在虚拟机环境下实验,所需要3台虚拟linux主机,分别为:

nginx    172.16.22.1

web1        172.16.22.2

web2        172.16.22.2

前提:

配置好yum源,具体配置过程请看:http://lihuan.blog.51cto.com/4391550/800845,这里不再赘述。

web1和web2上:

# yum install httpd –y

在windows下:

C:\Windows\System32\drivers\etc,修改hosts文件,增加如下三行:

172.16.22.1 www.lihuan.com

172.16.22.2  www.lh.com

172.16.22.3     www.lhlh.com

具体实验配置过程(在nginx上):

所需软件包如下:

nginx-1.0.14.tar.gz

下载地址:http://www.nginx.org/

healthcheck_nginx_upstreams.zip

下载地址:https://github.com/cep21/healthcheck_nginx_upstreams

这里默认软件包下载到/root下

1.安装nginx并打入健康状态监测补丁

  1. # yum groupinstall "Development Tools" –y
  2. # yum groupinstall "Development Libraries" –y
  3. # yum install pcre-devel –y
  4. # groupadd -r nginx
  5. # useradd -r -g nginx -s /bin/false -M nginx
  6. # tar xvf nginx-1.0.14.tar.gz
  7. # unzip healthcheck_nginx_upstreams.zip
  8. # cd nginx-1.0.14
  9. # patch -p1 < /root/cep21-healthcheck_nginx_upstreams-16d6ae7/nginx.patch
  10. # ./configure \
  11. --prefix=/usr \
  12. --sbin-path=/usr/sbin/nginx \
  13. --conf-path=/etc/nginx/nginx.conf \
  14. --error-log-path=/var/log/nginx/error.log \
  15. --http-log-path=/var/log/nginx/access.log \
  16. --pid-path=/var/run/nginx/nginx.pid  \
  17. --lock-path=/var/lock/nginx.lock \
  18. --user=nginx \
  19. --group=nginx \
  20. --with-http_ssl_module \
  21. --with-http_flv_module \
  22. --with-http_stub_status_module \
  23. --with-http_gzip_static_module \
  24. --http-client-body-temp-path=/var/tmp/nginx/client/ \
  25. --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  26. --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  27. --with-pcre \
  28. --add-module= /root/cep21-healthcheck_nginx_upstreams-16d6ae7
  29. # make && make install

为nginx提供服务脚本:

  1. # vim /etc/rc.d/init.d/nginx
  2. #!/bin/sh
  3. #
  4. # nginx - this script starts and stops the nginx daemon
  5. #
  6. # chkconfig:   - 85 15
  7. # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
  8. #               proxy and IMAP/POP3 proxy server
  9. # processname: nginx
  10. # config:      /etc/nginx/nginx.conf
  11. # config:      /etc/sysconfig/nginx
  12. # pidfile:     /var/run/nginx.pid
  13. # Source function library.
  14. /etc/rc.d/init.d/functions
  15. # Source networking configuration.
  16. . /etc/sysconfig/network
  17. # Check that networking is up.
  18. [ "$NETWORKING" = "no" ] && exit 0
  19. nginx="/usr/sbin/nginx"
  20. prog=$(basename $nginx)
  21. NGINX_CONF_FILE="/etc/nginx/nginx.conf"
  22. [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
  23. lockfile=/var/lock/subsys/nginx
  24. make_dirs() {
  25. # make required directories
  26. user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
  27. options=`$nginx -V 2>&1 | grep 'configure arguments:'`
  28. for opt in $options; do
  29. if [ `echo $opt | grep '.*-temp-path'` ]; then
  30. value=`echo $opt | cut -d "=" -f 2`
  31. if [ ! -d "$value" ]; then
  32. # echo "creating" $value
  33. mkdir -p $value && chown -R $user $value
  34. fi
  35. fi
  36. done
  37. }
  38. start() {
  39. [ -x $nginx ] || exit 5
  40. [ -f $NGINX_CONF_FILE ] || exit 6
  41. make_dirs
  42. echo -n $"Starting $prog: "
  43. daemon $nginx -c $NGINX_CONF_FILE
  44. retval=$?
  45. echo
  46. [ $retval -eq 0 ] && touch $lockfile
  47. return $retval
  48. }
  49. stop() {
  50. echo -n $"Stopping $prog: "
  51. killproc $prog -QUIT
  52. retval=$?
  53. echo
  54. [ $retval -eq 0 ] && rm -f $lockfile
  55. return $retval
  56. }
  57. restart() {
  58. configtest || return $?
  59. stop
  60. sleep 1
  61. start
  62. }
  63. reload() {
  64. configtest || return $?
  65. echo -n $"Reloading $prog: "
  66. killproc $nginx -HUP
  67. RETVAL=$?
  68. echo
  69. }
  70. force_reload() {
  71. restart
  72. }
  73. configtest() {
  74. $nginx -t -c $NGINX_CONF_FILE
  75. }
  76. rh_status() {
  77. status $prog
  78. }
  79. rh_status_q() {
  80. rh_status >/dev/null 2>&1
  81. }
  82. case "$1" in
  83. start)
  84. rh_status_q && exit 0
  85. $1
  86. ;;
  87. stop)
  88. rh_status_q || exit 0
  89. $1
  90. ;;
  91. restart|configtest)
  92. $1
  93. ;;
  94. reload)
  95. rh_status_q || exit 7
  96. $1
  97. ;;
  98. force-reload)
  99. force_reload
  100. ;;
  101. status)
  102. rh_status
  103. ;;
  104. condrestart|try-restart)
  105. rh_status_q || exit 0
  106. ;;
  107. *)
  108. echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
  109. exit 2
  110. esac

而后为此脚本赋予执行权限,添加至服务管理列表,并让其开机自动启动,在启动服务测试:

  1. # chmod +x /etc/rc.d/init.d/nginx
  2. # chkconfig --add nginx
  3. # chkconfig nginx on
  4. # service nginx start

2.实现nginx URL重写,实例域名跳转

  1. # vim /etc/nginx/nginx.conf  #实例如下
  2. server {
  3. listen 80;
  4. server_name www.lihuan.com;
  5. root html;
  6. index index.html index.htm;
  7. rewrite ^/ http://www.lh.com/;
  8. }
  9. # service nginx restart

说明:在windows下当你访问http://www.lihuan.com/的时候,自动跳转到http://www.lh.com/的服务上了。

3.实现反向代理

  1. # vim /etc/nginx/nginx.conf
  2. server {
  3. listen 80;
  4. server_name www.lihuan.com;
  5. root html;
  6. index index.html index.htm;
  7. proxy_pass  http://www.lh.com;
  8. }
  9. # service nginx restart

说明:当你访问www.lihuan.com的服务时,此时www.lihuan.com并没有提供web服务,而是反向代理到www.lh.com的web服务上了。

4.实现缓存服务器

  1. # vim /etc/nginx/nginx.conf
  2. http {
  3. proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=STATIC:10m    inactive=24h  max_size=1g;
  4. server {
  5. location / {
  6. proxy_pass             http:// www.lh.com;
  7. proxy_set_header       Host $host;
  8. proxy_cache            STATIC;
  9. proxy_cache_valid  200 302 10m;
  10. proxy_cache_valid  301 1h;
  11. proxy_cache_valid  any 1m;
  12. proxy_cache_use_stale  error timeout invalid_header updating
  13. http_500 http_502 http_503 http_504;
  14. }
  15. }
  16. }
  17. # service nginx restart

说明:当你访问www.lihuan.com反向代理到www.lh.com的时候,明显比直接访问www.lh.com的速度快,这就是缓存服务的作用。

5.做负载均衡

  1. # vim /etc/nginx/nginx.conf
  2. upstream loadbalance {
  3. server www.lh.com weight=5;
  4. server www.lhlh.com;
  5. }
  6. server {
  7. listen 80;
  8. server_name www.lihuan.com;
  9. location / {
  10. include proxy.conf;
  11. proxy_pass http:// loadbalance;
  12. }
  13. }
  14. # service nginx restart

说明:在windows主机上当你访问www.lihuan.com的时候,刷新几次会是不同的页面,这就说明负载均衡实现了(如果想明确看到实验结果,可以让web1和web2的页面不一样,但实际工作中,二者的web页面数据是完全一致的)

6.实现健康状态监测

  1. # vim /etc/nginx/nginx.conf
  2. http {
  3. upstream loadba {
  4. server 172.16.22.2:80;
  5. server 172.16.22.3:80;
  6. healthcheck_enabled;
  7. healthcheck_delay 1000;
  8. healthcheck_timeout 1000;
  9. healthcheck_failcount 1;
  10. healthcheck_send "GET /.health HTTP/1.0";
  11. }
  12. server {
  13. listen 80;
  14. location / {
  15. proxy_set_header Host $http_host;
  16. proxy_pass http://172.16.22.2;
  17. proxy_connect_timeout 3;
  18. }
  19. location /stat {
  20. healthcheck_status;
  21. }
  22. }
  23. }
  24. # service nginx restart

说明:当你在地址栏里输入:http://172.16.22.1/stat,即可看到web1和web2 web服务的健康状况的。

转载于:https://blog.51cto.com/lihuan/838834

关于nginx,你不可不知的几大特色功能相关推荐

  1. 关于nginx你可能不知道的秘密----nginx地址重写以及错误页面配置

    1.什么是Rewrite Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程. URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示 ...

  2. nginx简单创建ssl配置https,实现https静态访问图片和页面

    最重要的两点:1.配置nginx开放端口80和443 2.找到nginx对应的文件地址(默认地址为/usr/local/nginx) 1.通过openssl生成rsa非对称密钥 创建一个文件夹,推荐在 ...

  3. DD-WRT无线路由绝招DHCP转发

    前一段时间我们依次为大家介绍了如何将自己买来的无线设备刷新成功能强大的DD-WRT无线 路由器,以及刷新后DD-WRT所具备的独有功能,不过由于篇幅关系只是对几大功能进行了简单介绍,并没有详细的说明. ...

  4. QQ邮箱iPhone版上线,借助苹果之力抢占手机邮箱市场

    基于QQ庞大的用户基础,QQ邮箱近年来的崛起有目共睹,其在中国邮箱市场的实力和潜力,也是苹果公司在最新发布的iOS5和iPhone4S中内置QQ邮箱的主要原因之一.10月24日,QQ邮箱iPhone版 ...

  5. 袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生

      一.前言 ChunJun(原FlinkX)是一个基于Flink提供易用.稳定.高效的批流统一的数据集成工具,是袋鼠云一站式大数据开发平台-数栈DTinsight的核心计算引擎,其技术架构基于实时计 ...

  6. 薪资提不上去是因为你不懂市场需求

    目前随着市场上 Java 开发人员越来越多,很多人在工作中能力很难有大的提升,自学又感觉很费劲,跳槽薪资也很难有大的突破,这样的问题困扰了很多发展中的程序员. 本 Chat 主要通过分析和解决目前多数 ...

  7. WebSocket新手入门指南

    文章目录 介绍 WebSocket 的原理,了解原理后,用起来更放心大胆: 类似技术对比,搞清楚自己的业务场景是不是需要使用 WebSocket: 使用过程中的经验分享,让你少走一些弯路: 1 Web ...

  8. 测试版迅捷在线PDF转Word转换器

    不管你是办公族还是大众,只要你需要在网上找资料,我就不相信你没遇到过PDF格式的文件!跟美容不一样,其实下载个PDF转换器并不是一件很麻烦的事,关键是要看你选对了没.     什么是在线PDF转换成W ...

  9. 百万并发下的Nginx,技术人不得不知的那些事

    Nginx,互联网公司最常用的反向代理服务器,天生适合处理百万级并发连接,生态圈内第三方module长期有效,多种应用层的使用场景,使得它在和LVS与F5的折衷过程中并不落下风,经常有朋友问我: 有没 ...

最新文章

  1. 坐标系转换(镜像与对换)
  2. 三个python文件怎么关联___name__= __main__怎么解释 怎么用 另外两个py文件之间的互动关联...
  3. LeetCode-95-Unique Binary Search Trees II
  4. conda安装cuda_记一次在 RTX 3090 上安装 APEX
  5. CREAMy简洁大气模板Typecho主题
  6. Mysql5.7.26解压版(免安装版)简单快速配置步骤,5分钟搞定(win10-64位系统)
  7. 后端开发如何设计数据库系列文章(一)设计传统系统表结构(Java开发)
  8. bash内部命令-1
  9. 042 第一章 简介
  10. 必装 6 款超神的 GitHub 插件
  11. 计算机学硕答辩,东南大学计算机硕士毕业答辩基本流程(参考).doc
  12. 保姆级教程,如何发现 GitHub 上的优质项目?
  13. 佛教禅理——对待命运
  14. 关于C语言文件的读写
  15. Postman 复制粘贴表单参数
  16. 【JokerのLabView】VI嵌套。
  17. Blender 物理属性 (二)布料和碰撞
  18. Scala 环境搭建安装配置
  19. Java基础:this关键字可在方法参数和成员变量同名时进行区分
  20. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(6)- 打包发布(PyInstaller3.3.1)

热门文章

  1. wpf中UserControl制作
  2. QQ网页登陆密码加密方式(农场、空间、WebQQ等通用)
  3. Linux: 系统结构详解
  4. Google谷歌通过地址计算两地距离 HOW TO CALCULATE DRIVING DISTANCE BETWEEN 2 LOCATIONS
  5. HTML5获取地理位置定位信息
  6. PHP判断PHP版本是否及格
  7. php 日期时间运算的小结(计算当前时间之后(之前)的时间)
  8. linux中进程的用户管理
  9. LeetCode刷题(Python)——在排序数组中查找元素的第一个和最后一个位置
  10. 如何用Pygame写游戏(三)