一、常用命令
使用nginx操作命令前提条件,必须进入sbin目录
/usr/local/nginx/sbin
# 查看nginx版本号
./nginx -v
# 启动nginx
./nginx
# 关闭nginx
./nginx -s stop
# 重新加载nginx
./nginx -s reload
二、配置文件
nginx 配置文件的位置
/usr/local/nginx/conf/nginx.conf
nginx配置文件有三部分组成:全局、event、http
全局块 举例
# 这是Nginx服务器并发处理服务的关键配置
# work_processes 值越大,可以支持的并发处理量越多,但会受到硬件、软件等设备的制约
worker_processes 1;
events块 举例
# events块涉及的指令主要影响Nginx服务器与用户的网络连接
# 表示每个work_processes支持的最大连接数是1024
worker_connections 1024;
http块
- http全局块:包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。
- server块
listen 80; # 监听的端口
server_name localhost; # 主机名称
location / { # 匹配路径跳转
root html;
index index.html index.htm;
}
三、反向代理
准备工作:安装Jdk和Tomcat
启动Tomcat
./apache-tomcat-9.0.24/bin/startup.sh
查看日志文件
cd apache-tomcat-9.0.24/logs/
tail -f catalina.out
对外开放访问的端口
# 添加端口
firewall-cmd --add-port=8080/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看开放端口号
firewall-cmd --list-all
目标1:访问www.123.com反向代理到Tomca首页
- 修改hosts文件
C:\Windows\System32\drivers\etc
# 映射ip和端口
192.168.25.104 www.123.com
这时访问http://www.123.com:8080
可以访问到Tomcat首页
2. 修改nginx.conf
server {
listen 80;
server_name 192.168.25.104; # 服务器的Ip地址
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://127.0.0.1:8080; # 反向代理的Ip和端口
index index.html index.htm;
}
目标2:使用nginx反向代理,根据路径跳转到不同端口的服务中
- 监听端口9001
- 访问
http://192.168.25.104:9001/edu/
跳转到127.0.0.1:8080
- 访问
http://192.168.25.104:9001/vod/
跳转到127.0.0.1:8081
- 修改8081Tomcat的server.xml并启动
vi server.xml
# 修改SHUTDOWN端口,8005改成8015
<Server port="8015" shutdown="SHUTDOWN">
# 修改访问端口,8080改成8081
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
# 修改AJP端口,8009改成8019
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
- 在两个Tomcat服务器中创建文件夹和测试页面
- 修改nginx.conf,添加一个server块
server {
listen 9001;
server_name 192.168.25.104;
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
- 重启nginx
cd /usr/local/nginx/sbin/
./nginx -s reload
- 测试
浏览器输入以下两个地址均可正常访问http://192.168.25.104:9001/edu/edu.html
http://192.168.25.104:9001/vod/vod.html
通配符解释
location [ = | ~ | ~* | ^~] uri {
}
- = 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配
- ~ 用于uri包含正则表达式,并且区分大小写
- ~* 用于表示uri包含正则表达式,并且不区别大小写
- ^~ 用于不含正则表达式的uri前,要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后,而不再使用location块中的正则uri和请求字符串做匹配
四、负载均衡
目标:浏览器输入地址http://192.168.25.104/balance/test.html
,实现负载均衡效果,即平均分配到8080和8081中
准备工作:在8080和8081两台Tomcat中创建目录balance,页面test.html
修改配置文件nginx.conf
http {
upstream myserver{
server 192.168.25.104:8080;
server 192.168.25.104:8081;
}
server {
listen 80;
server_name 192.168.25.104;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
}
}
重启nginx后测试
浏览器输入http://192.168.25.104/balance/test.html
返回结果1:
返回结果2:
负载均衡分配策略
- 轮询(默认)
- weight 权重,默认为1,权重越高被分配的客户端越多
upstream myserver{
server 192.168.25.104:8080 weight=5;
server 192.168.25.104:8081 weight=1;
}
- ip_hash 每个请求访问的Ip的hash结果分配,每个访客固定访问一个后端服务器,解决session问题
upstream myserver{
ip_hash;
server 192.168.25.104:8080;
server 192.168.25.104:8081;
}
- fair(第三方) 按后端服务器响应时间来分配请求,响应时间短的优先分配
upstream myserver{
server 192.168.25.104:8080;
server 192.168.25.104:8081;
fair;
}
五、动静分离
准备工作:新建 /static/www
和 /static/img
,并放一些静态页面和图片。
修改配置文件 nginx.conf
server {
listen 80;
server_name 192.168.25.104;
location /www/ {
root /static/;
index index.html index.htm;
}
location /img/ {
root /static/;
autoindex on; # 列出文件的目录
}
}
重启nginx开始测试
浏览器输入http://192.168.25.104/img/1.jpg
可以正常访问