nginx学习从入门到精通
为什么使用Nignx Nginx基本用法 Nginx的主配置文件 Nginx的其他文件 Nginx反向代理 Nginx的location路径映射 Nginx的负载均衡 轮询 权重 ip_hash Nginx动静分离 动态资源代理 静态资源代理 扩展内容(nginx集群)
为什么使用Nignx
Nginx是一个高性能的HTTP和反向代理服务器 内存消耗小:开启10个nginx才占150M内存 ,nginx处理静态文件好,耗费内存少 跨平台、配置简单,非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发
Nginx基本用法
开启nginx:sudo service nginx start
重启nginx:sudo service nginx reload
关闭nginx:nginx -s stop
Nginx的主配置文件
我们一般把nginx.conf放在/etc/nginx/nginx.conf
user nginx; # worker_processes的数值越大,Nginx的并发能力就越强 worker_processes 1; # error_log代表Nginx错误日志存放的位置 error_log /var/log/nginx/error.log warn; # pid是Nginx运行的一个标识 pid /var/run/nginx.pid; events { # worker_connections的数值越大,Nginx的并发能力就越强 worker_connections 1024; } http { # include代表引入一个外部文件 # mime.types中存放着大量媒体类型 include /etc/nginx/mime.types; default_type application/octet-stream; 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; keepalive_timeout 65; #gzip on; #引入了conf.d下以.conf为结尾的配置文件 include /etc/nginx/conf.d/*.conf; }
Nginx的其他文件
其他配置文件放在/etc/nginx/conf.d/*.conf
基本配置信息(这样是访问静态资源的)
nginx ssl简单配置(https认证)– 点我查看
server { # listen代表Nginx监听ipv4的端口号 listen 80; # listen代表Nginx监听ipv6的端口号 listen [::]:80; # server_name代表Nginx接受请求的IP server_name localhost; location / { # root:将接受到的请求根据/usr/share/nginx/html去查找静态资源 root /usr/share/nginx/html; # index:默认去上述的路径中找到index.html或index.htm index index.html index.htm; } #错误跳转页面(没有不耽误) error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
Nginx反向代理
学习反向代理时,应该先了解正向代理
正向代理:
1.正向代理服务是由客户端设立的
2.客户端了解代理服务器和目标服务器都是谁
3.帮助咱们实现突破访问权限,提高访问的速度,对目标服务器隐藏客户端的ip地址
反向代理
1.反向代理服务器是配置在服务端的
2.客户端不知道访问的到底是哪一台服务器
3.达到负载均衡,并且可以隐藏服务器真正的ip地址
反向代理代码实现:
修改/etc/nginx/conf.d/*.conf
这里我们访问我们的tomcat服务器
server { listen 80; listen [::]:80; server_name localhost; location / { # 反向代理的服务器:127.0.0.1可以换成域名或者ip proxy_pass http://127.0.0.1:8080/; } }
Nginx的location路径映射
1、 = 匹配
location = / { #精准匹配,主机名后面不能带能和字符串 }
2、 通用匹配
location /xxx { #匹配所有以/xxx开头的路径 }
3、 匹配开头路径
location ^~ /xxx/xx { #匹配所有以/xxx/xx开头的路径 }
4、正则匹配
location ~ /xxx { #匹配所有以/xxx开头的路径 }
5、匹配结尾路径
location ~* \.(gif/jpg/png)$ { #匹配以.gif、.jpg或者.png结尾的路径 }
6、 通用匹配
location / { #通用匹配,匹配所有请求 }
Nginx的负载均衡
Nginx有三种负载均和的策略
- 轮询:
将客户端发起请求,平均分配给每一台服务器 权重:
会将客户端的请求,根据服务器的权重值不同,分配不同的数量 ip_hash:
基于发起请求的客户端的ip地址不同,他始终会将请求发送到指定的服务器上
就是说如果这个客户端的请求的ip地址不变,那么处理请求的服务器将一直是同一个
轮询
upstream daili_server{ server localhost:8080; #服务器IP或域名 server localhost:8081; #服务器IP或域名 } server { listen 80; listen [::]:80; server_name localhost; location / { proxy_pass http://daili_server/; #负载均衡 } }
权重
upstream daili_server{ server localhost:8080 weight=10; #服务器IP或域名 server localhost:8081 weight=2; #服务器IP或域名 } server { listen 80; listen [::]:80; server_name localhost; location / { proxy_pass http://daili_server/; #负载均衡 } }
ip_hash
upstream daili_server{ ip_hash; server localhost:8080; #服务器IP或域名 server localhost:8081; #服务器IP或域名 } server { listen 80; listen [::]:80; server_name localhost; location / { proxy_pass http://daili_server/; #负载均衡 } }
Nginx动静分离
提高用户访问静态代码的速度,降低对后台应用访问
我们将静态资源放到nginx中,动态资源转发到tomcat服务器中
Nginx的并发能力公式:
worker_processes * worker_connections / 4|2 = Nginx最终的并发能力
动态资源需要/4,静态资源只需要/2
动态资源代理
location / { proxy_pass 路径; }
静态资源代理
location / { root 静态资源路径; index 默认访问路径下的什么资源; autoindex on;#可以不写,写了则代表展示静态资源的全部内容,以列表的形式展开 }
扩展内容(nginx集群)
原文链接:http://www.voycn.com/article/nginxxuexicongrumendaojingtong