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