nginx 学习
  • 反向代理
  • 负载平衡
  • 动静拆散
反向代理

正向代理 客户端通过代理服务器拜访网络 称之为正向代理
反向代理 通过反向代理服务器 转发到真正的服务器 能够暗藏实在服务器
负载平衡 客户端发送申请到反向代理服务器 反向代理服务器平均分配申请到多台服务器
动静拆散 把动静页面和动态页面离开进行部署

装置nginx

sudo yum install epel-release
sudo yum install nginx
敞开防火墙

nginx常用命令

ps -ef | grep nginx 查看nginx过程
nginx -v 查看版本号
nginx -s stop 敞开命令
nginx -s reload 重启命令

nginx配置文件

配置文件由三局部组成

第一局部 全局块

从配置文件到 events之间的内容

user nginx;worker_processes auto; //并发量error_log /var/log/nginx/error.log;pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.include /usr/share/nginx/modules/*.conf;
第二局部 events

nginx反对的最大连接数 worker_connections 服务器与用户网络连接局部

events {    worker_connections 1024;}
第三局部 大多数性能和配置 http块
http {    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';    access_log  /var/log/nginx/access.log  main;    sendfile            on;    tcp_nopush          on;    tcp_nodelay         on;    keepalive_timeout   65;    types_hash_max_size 2048;    include             /etc/nginx/mime.types;    default_type        application/octet-stream;    # Load modular configuration files from the /etc/nginx/conf.d directory.    # See http://nginx.org/en/docs/ngx_core_module.html#include    # for more information.    include /etc/nginx/conf.d/*.conf;    server {        listen       80 default_server;        listen       [::]:80 default_server;        server_name  _;        root         /usr/share/nginx/html;        # Load configuration files for the default server block.        include /etc/nginx/default.d/*.conf;        location / {        }        error_page 404 /404.html;        location = /404.html {        }        error_page 500 502 503 504 /50x.html;        location = /50x.html {        }    }# Settings for a TLS enabled server.##    server {#        listen       443 ssl http2 default_server;#        listen       [::]:443 ssl http2 default_server;#        server_name  _;#        root         /usr/share/nginx/html;##        ssl_certificate "/etc/pki/nginx/server.crt";#        ssl_certificate_key "/etc/pki/nginx/private/server.key";#        ssl_session_cache shared:SSL:1m;#        ssl_session_timeout  10m;#        ssl_ciphers HIGH:!aNULL:!MD5;#        ssl_prefer_server_ciphers on;##        # Load configuration files for the default server block.#        include /etc/nginx/default.d/*.conf;##        location / {#        }##        error_page 404 /404.html;#        location = /404.html {#        }##        error_page 500 502 503 504 /50x.html;#        location = /50x.html {#        }#    }}

http全局块
server局部 和虚拟主机有密切关系 全局server

nginx 配置实例-反向代理 tomcat

装置tomcat 解压并cd cd apache-tomcat-7.0.106/bin
执行 ./startup.sh 查看tomcat服务状态http://192.168.0.126:8080/

server {        listen       80 default_server;        listen       [::]:80 default_server;        server_name  **192.168.0.126**;        root         /usr/share/nginx/html;        # Load configuration files for the default server block.        include /etc/nginx/default.d/*.conf;        location / {          **proxy_pass http://127.0.0.1:8080;**        }        error_page 404 /404.html;        location = /404.html {        }        error_page 500 502 503 504 /50x.html;        location = /50x.html {        }    }
依据不同门路跳转不同tomcat

(1)筹备两个tomcat 一个是8080 一个是8081 cd /conf 批改server.xml
(2)创立不同的页面 在webapps中退出文件html
http://192.168.0.126:8081/vod/a.html
http://192.168.0.126:8080/edu/a.html

http://192.168.0.126:9001/edu/a.htmlhttp://192.168.0.126:9001/vod/a.html
 server {        listen       9001;        server_name  192.168.0.126;        root         /usr/share/nginx/html;        # Load configuration files for the default server block.        include /etc/nginx/default.d/*.conf;        location ~ /edu/ {          proxy_pass http://127.0.0.1:8080;                }     location ~ /vod/ {          proxy_pass http://127.0.0.1:8081;        }        error_page 404 /404.html;        location = /404.html {        }        error_page 500 502 503 504 /50x.html;        location = /50x.html {        }    }
nginx配置实例 负载平衡

(1)筹备两台tomcat 端口别离为8080 和 8081
(2)创立 edu别离放入两个不同的html
在http中加上服务列表

upstream myserver {server 192.68.0.126:8080;server 192.168.0.126:8081;}    server {        listen       80 default_server;        listen       [::]:80 default_server;        server_name  192.168.0.126;        root         /usr/share/nginx/html;        # Load configuration files for the default server block.        include /etc/nginx/default.d/*.conf;        location / {          proxy_pass http://myserver;        }        error_page 404 /404.html;        location = /404.html {        }        error_page 500 502 503 504 /50x.html;        location = /50x.html {        }    }

nginx 调配策略

  • 默认轮询
  • 权重调配
upstream myserver {server 192.68.0.126:8080 widget=1;server 192.168.0.126:8081 widget=2;}
  • ip_hash 每个服务器拜访同一个服务 不存在session问题
upstream myserver {ip_hashserver 192.68.0.126:8080 ;server 192.168.0.126:8081;}
  • fair 依据申请工夫进行调配
nginx配置实例-动静拆散

动静申请 动态申请 动态资源服务器 nginx 通过拆散动静申请到不同的服务器
一种形式是应用动静和动态服务器离开 一种是应用nginx location属性进行动静拆散
通过expires 参数设置,能够设置浏览器缓存工夫。
创立 www和img文件夹
use root
配置不同的拜访地址

      location /www/ {          autoindex on;          root /root/home/data/;        }   location /img/ {          autoindex on;          root /root/home/data/;        }
nginx 高可用

通过两台nginx服务器 主从模式 keepalived 进行监控切换 虚构ip
筹备工作
(1) 须要两个虚拟机环境 192.168.17.126 和 192.168.17.127
(2) 装置nginx 在两台服务器中装置 keepalived 应用yum命令装置
yum install keepalived -y
批改 /etc/keepalived/keepalived.conf 配置

keepalived 文件配置

在 /etc/hosts 中增加 127.0.0.1 LVS_DEVEL

global_defs {   notification_email {     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 192.168.200.1   smtp_connect_timeout 30   router_id LVS_DEVEL //服务器别名   vrrp_skip_check_adv_addr   vrrp_strict   vrrp_garp_interval 0   vrrp_gna_interval 0}vrrp_script chk_http_port {   script "/etc/keepalived/nginx_check.sh"   interval 2   widget 2 //nginx权重}vrrp_instance VI_1 {    state MASTER  //主服务    interface eth0    virtual_router_id 51 //主备机id必须雷同    priority 100 //优先级    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.17.50    }}
ps aux ¦ grep nginx ¦ grep -v grep 2> /dev/null 1>&2   # 过滤nginx过程if [[ $? -eq 0 ]]               # 如果过滤有nginx过程会返回0则认为nginx存活then    sleep 5                     # 使脚本进入休眠else# 如果nginx没有存活尝试启动nginx,如果失败则杀死keepalived的过程    /usr/sbin/nginx    ps aux ¦ grep nginx ¦ grep -v grep 2> /dev/null 1>&2    if [[ $? -eq 0 ]]    then        pkill keepalived    fifi
nginx原理解析

master和worker过程 nginx启动当前会有两个过程
worker是如何进行工作的 多个worker来争抢工作
一个master 和多个worker的长处
能够应用热部署 nginx -s reload
每个worker都是独立过程 不须要加锁 相互之间不会影响 并升高服务中断的危险
io 多路复用机制 worker数个别和cpu数量最好是相等的
最大并发数 连接数 乘以 worker数 除以 2 或者 4