一、配置文件理解
# 编辑配置文件
vi /usr/local/nginx/conf/nginx.conf
# 只看未注释的
# 代表并发处理的数量,值越大并发越大,只要设备支持
worker_processes 1;
# nginx服务器和用户网络连接
events {
# 代表 worker_processes 最大连接数
worker_connections 1024;
}
# 大部分修改都在这里,代理、缓存、日志等等(注释掉的我这里删除了)
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
# nginx监听端口号
listen 80;
# 主机名称
server_name localhost;
# 当路径包含某个值时进行的操作
location / {
root html;
index index.html index.htm;
}
# 错误页面
error_page 500 502 503 504 /50x.html;
# 当路径包含某个值时进行的操作
location = /50x.html {
root html;
}
}
}
二、反向代理
# 1、安装tomcat和jdk并配置
# 2、把8080端口加入防火墙,或者关闭防火墙
# 3、修改nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
server {
listen 80;
# 这个是把原先的local改成IP地址了
server_name 192.168.74.132;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
# 这个是新增
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
...
# 保存
# 热部署刷新一下
./nginx -s reload
# 访问
http://192.168.74.132/
# 监听端口,根据路径访问不同的地址
# 编辑配置文件,新增一个server
server {
# 监听9001端口
listen 9001;
server_name 192.168.74.132;
# ~ 代表正则,路径中包含one则跳转
location ~ /one/ {
proxy_pass http://127.0.0.1:8001;
}
location ~ /two/ {
proxy_pass http://127.0.0.1:8002;
}
}
server {
...
#################### 扩展 ######################
# location说明
# 语法:
location [= | ~ | ~* | ^~] URI {
}
# 解释
# =:用于不含正则表达式的URI前,要求请求字符串与URI严格匹配,如果匹配成功,就停止向下搜索立即处理
# ~:用于表示URI包含正则表达式,并且区分大小写
# ~*:用于表示URI包含正则表达式,并且不区分大小写
# ^~:用于不含正则表达式的 URI前,要求Nginx服务器找到标识URI和请求字符串匹配度最高的location
# ~^:表示匹配以什么规则开头,location ~ ^/v1/.*/xxx.* {...}代表匹配以v1开始,且跳过任意字符串,且后面包含xxx的url路径
# 立即使用此location处理请求,而不再使用location块中的正则URI和请求字符串做匹配。
# PS:如果URI包含正则表达式,则必须要有~ 或者 ~* 标识
三、负载均衡
# 编辑配置文件
vi /usr/local/nginx/conf/nginx.conf
# http 中新增
http{
...
#gzip on;
# 新增 upstream
# myserver 是自定义的名字
upstream myserver{
server 115.28.52.63:8001 weight=1;
server 115.28.52.63:8002 weight=1;
}
# 修改server
server {
listen 80;
server_name 192.168.74.132;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
...
#################### 扩展 ###################
1、轮询
每个请求按实际顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自带剔除
2、weight
weight 代表权重,默认为1,权重越高被分配的客户端越高
指定轮询几率,wight和访问比率成正比,用于后端服务器性能不均的情况,例如:
upstream server_pool{
server 192.168.1.1 weight=10;
server 192.168.1.2 weight=9;
}
3、ip_hash
每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。例如
upstream server_pool{
ip_hash;
server 192.168.1.1:80;
server 192.168.1.2:81;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{
server 192.168.1.1:80;
server 192.168.1.2:80;
fair;
}
###############################################
四、动静分离
# 1、动静分离,把动态请求和静态请求通过nginx分开
# 把静态文件单独放在一个服务器上,另一种是动态静态文件混合放在一起,通过nginx来区分
# 在根目录下创建两个文件夹,www和image 一个放html文件一个放图片文件,自己创建的文件夹
# 修改配置文件
...
#gzip on;
server {
listen 80;
server_name 192.168.74.132;
#charset koi8-r;
#access_log logs/host.access.log main;
# 路径包含www时
location /www/ {
root /data/;
index index.html index.htm;
}
# 路径包含image时
location /image/ {
root /data/;
# 列出当前文件夹中的内容
autoindex on;
}
...
# 重新部署
./nginx -s reload
# 测试
http://192.168.74.132/image/1.png
# 会把当前文件夹中的文件列出来(autoindex 参数的作用)
http://192.168.74.132/image/
# 访问页面
http://192.168.74.132/www/a.html
五、高可用的集群
# 当前nginx宕机时,也可用正常访问服务器,就是所谓的高可用
# 通过keepalived 来实现nginx的主备机制,当一台宕掉,另一台就接手
# 两台机器都按照nginx、keepalived 一台当作主、一台当作备
# 安装keepalived
yum install -y keepalived
# 验证
rpm -q -a keepalived
# 编辑keepalived 配置文件
vi /etc/keepalived/keepalived.conf
# 配置文件内容
# 改天单独学一下keepalived
# 原理就是 两台机器都按照keepalived 和 nginx,启动nginx 和 keepalived。
# 编写一个测试脚本,来检测nginx 有没有挂,通过keepalived 调用这个脚本
# 当一台的nginx挂掉就用另一台。(keepalived 对外提供一个浮动IP,通过这个做到无感切换)