常用命令
默认安装在**/usr/local/nginx**下
[root@nginx nginx]# ll
总用量 0
drwx------ 2 nobody root 6 5月 17 07:19 client_body_temp
drwxr-xr-x 2 root root 333 5月 19 05:24 conf # nginx配置文件目录
drwx------ 2 nobody root 6 5月 17 07:19 fastcgi_temp
drwxr-xr-x 2 root root 40 5月 17 07:18 html # nginx静态资源文件目录
drwxr-xr-x 2 root root 58 5月 18 08:24 logs
drwx------ 2 nobody root 6 5月 17 07:19 proxy_temp
drwxr-xr-x 2 root root 19 5月 17 07:18 sbin # 可执行文件目录
drwx------ 2 nobody root 6 5月 17 07:19 scgi_temp
drwx------ 2 nobody root 6 5月 17 07:19 uwsgi_temp
启动
./nginx
停止
./nginx -s stop
重新加载配置文件
./nginx -s reload
nginx版本
./nginx -v # 只查看nginx版本
./nginx -V # nginx版本、Gcc版本、./configire参数
反向代理
Nginx反向代理配置
将对nginx的请求反向代理到http://localhost:8082
上
http {
server {
# 监听的端口
listen 80;
# 监听的域名
# server_name 192.168.8.208;
# 将指定的文件或目录重新定位
location / {
# 请求的根路径
# root html;
# 定义索引,按顺序匹配
# index index.html index.htm;
proxy_pass http://192.168.8.120:8082;
}
}
}
根据不同的访问域名跳转到不同的服务器
http://192.168.8.123/edu/ -> tomcat8081
http://192.168.8.123/vod/ -> tomcat8082
-
在tomcat8081 / tomcat8082 下新建项目文件
/usr/local/tomcat/tomcat8081/webapps
/usr/local/tomcat/tomcat8082/webapps
-
nginx配置
server { # 监听的端口 listen 80; location ~ /edu/ { proxy_pass http://192.168.8.120:8081; } location ~ /vod/ { proxy_pass http://192.168.8.120:8082; } }
location 指令说明
该指令用于匹配URL,语法如下
location [ = | ~ | ~* | ^~] uri {
}
- = :用于不包含正则表达式的uri前,要求请求字符与 uri 严格匹配,如果匹配成功,停止搜索其它匹配路径,直接处理请求
- ~ :用于表示 uri 包含正则表达式,并区分大小写
- ~* :用于表示uri包含正则表达式,不区分大小写
- ^~ :用于不包含正则表达式的 uri 前,要求 Nginx服务器找到表示 uri 和 请求字符串匹配度最高的 location 后,立即使用该location进行处理请求,而不再使用location块中的正则表达 uri 和请求字符串做匹配
server_name 说明
用于域名匹配解析,匹配顺序如下:
-
准确的 server_name 匹配
server { listen 80; server_name test123.com www.test123.com; }
-
以 * 通配符开始的字符串
server { listen 80; server_name *.test123.com ; }
-
以 * 通配符结束的字符串
server { listen 80; server_name www.*; }
-
正则表达式
server { listen 80; server_name ~^(?.+)\.test123\.com; }
从上向下,优先级依次降低,匹配成功后停止向下匹配
负载均衡
负载配置
对nginx的请求会转发到不同的tomcat中
http {
upstream hello {
server 192.168.8.120:8081 ;
server 192.168.8.120:8082 ;
}
# 虚拟主机配置
server {
# 监听的端口
listen 80;
location / {
proxy_pass http://hello;
}
}
}
Nginx upstream的5种权重分配方式
-
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,后端服务器宕机时自动删除
upstream hello { server 192.168.8.120:8081 ; server 192.168.8.120:8082 ; }
-
weight
指定轮询几率,根据weight的比例进行分配
upstream hello { server 192.168.8.120:8081 weight=4; server 192.168.8.120:8082 weight=1; }
-
ip_hash
每个请求按访问ip的hash结果进行访问,这样每个ip每次都访问一个后端服务器,解决session问题
upstream hello { ip_hash; server 192.168.8.120:8081 ; server 192.168.8.120:8082 ; }
-
fair(第三方)
按服务器的响应时间来分配请求,响应时间短的优先分配
upstream hello { server 192.168.8.120:8081 ; server 192.168.8.120:8082 ; fair; }
-
url_hash(第三方)
按访问url的hash结果分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream hello { server 192.168.8.120:8081 ; server 192.168.8.120:8082 ; hash $request_uri; # 使用的hash算法 hash_method crc32; }
动静分离
-
创建静态资源文件目录
-
nginx配置
server { listen 80; server_name 192.168.8.120; location /www/ { root /data/; index index.html index.htm; } location /image/ { root /data/; # 显示静态资源目录 autoindex on ; } }
-
请求静态资源 图片路径
http://192.168.8.120/image/
-
请求静态资源 html
http://192.168.8.120/www/