关于nginx:nginx学习

38次阅读

共计 5209 个字符,预计需要花费 14 分钟才能阅读完成。

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.html
http://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_hash
server 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
    fi
fi
nginx 原理解析

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

正文完
 0