nginx配置组成
nginx是由三大块组成:
#第一部分 全局块:
worker_processes 1;#值越大并发处理数量越多,最好和服务器的CPU相等
#第二部分 events块:
events {
worker_connections 1024; #nginx支持最大连接数
}
第三部分 http块:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#server块
server {
listen 80; #nginx监听的端口号
server_name localhost; #nginx请求的ip
#location块
location / {
root /usr/share/nginx/html; #去该目录查找静态资源
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
nginx详细介绍
nginx的正向代理
正向代理:在客户端配置代理服务器,通过代理进行互联网的访问。
帮助我们提高访问的速度,对目标服务器隐藏客户端的IP地址。
nginx的反向代理
反向代理:客户端不需要配置,将请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据。
(修改tomcat端口:在/conf目录下的serve.xml中 搜索Connector 修改端口。在/bin目录下重启tomcat)
<Connector port="8090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
如果你是docker安装的Nginx这边的需要将这边localhost改成你本地IP地址,不然没有效果;如果你是docke安装的tomcat需要将下面代理地址改成你容器的独立IP。
命令如下:
docker inspect --format=‘{{.NetworkSettings.IPAddress}}’ 容器名
补充
nginx的location路径问题:
请求路径:http://127.0.0.1/proxy/test.html
第一种(有"/",无路径):
location /proxy/ {
proxy_pass http://127.0.0.1:8080/;
}
代理后 http://127.0.0.1:8080/test.html
第二种(无"/",无路径)
location /proxy/ {
proxy_pass http://127.0.0.1:8080;
}
代理后 http://127.0.0.1:8080/proxy/test.html
第三种(有"/",有路径):
location /proxy/ {
proxy_pass http://127.0.0.1:8080/a/;
}
代理后 http://127.0.0.1:8080/a/test.html
第四种(无"/",url包含路径):
location /proxy/ {
proxy_pass http://127.0.0.1:8080/a;
}
代理后 http://127.0.0.1:8080/atest.html
nginx的location规则:
① =匹配
location = /xxx {
精准匹配:主机后面不能带任何的字符串
}
②通用匹配
location /xxx {
匹配所有以/xxx开头的路径
}
③正则匹配
location ~/xxx {
匹配所有以/xxx开头的路径
}
④匹配开头路径
location ^~/images/ {
匹配所有以/images开头的路径
}
⑤匹配结尾路径
location ~*\.(gif | png | jpg)$ {
#匹配所有以gif | png | jpg结尾的路径
}
优先级:
nginx的负载均衡
①轮询
②weight权重:weight权重默认为1,权重越高被分配到的客户端越多
③ip_hash:每个请求按访问ip的hash结果分配,每个访客固定访问一个服务器,可解决session问题,
④fail(第三方):按响应时间分配,时间越短优先级越高。
nginx的动静分离
nginx的并发能力:worker_connectionworker_process
动态资源:worker_connectionworker_process/4
静态资源:worker_connection*worker_process/2