windows 下 nginx 的反向代理学习整理
下载什么的就不说了,下载好了解压就能用,和 tomcat 差不多,下面说一些配置和操作什么的;
启动等命令:(命令行进入到 nginx 解压目录下)
start nginx 启动命令
nginx -s reload 重新加载配置文件
nginx -s stop 停止 nginx
nginx -s quit 退出 nginx, 会结束 nginx 进程
nginx -s reopen 重启
-v 啥的就不说了,基本上就这些命令。
nginx 最主要的还是配置文件, 存在于解压目录的 conf 目中中, 最主要的是 nginx.conf 文件,默认的的 nginx.conf( 去除注释 ) 文件如下
worker_processes 1;
#工作进程的数目,通常是 cpu 的核数或 2 倍
events {
worker_connections 1024;
#单个工作进程的最大连接数目,在配置允许的范围内尽量的大一些
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁 盘与网络IO处理 #速度,降低系统uptime。
server { # 配置虚拟机
listen 80; # 监听端口 80,浏览器默认的端口号就是 80
server_name localhost; # 监听的域名
location / { # 对 包含 / 的 uri ( 所有的 ) 进行代理
root E:/nignx # 指定虚拟机的根目录 类似 tomcat 的 webApp 目录下的 Root 目录 url 域名之后的路径会从此目录开始查找
index index.html index.htm index.jsp # 指定默认的页面 通常在 url 域名后没有跟路径时启用
}
error_page 500 502 503 504 /50x.html; # 指定失败的页面
location = /50x.html {
root html;
}
}
}
以上就是一个刚解压的 nginx 目录的配置文件的全部,下面来看看 如何通过配置文件实现一些 nginx 的功能;
1)反向代理
代 理:代理服务器架设在客户端和 服务器之间, 将客户端发出的请求经过处理后与网络中指定的地址进行交互;
反向代理:反向代理服务器架设在服务器端,将客户端发送过来的请求,经过处理后发送到内网不同的服务器去处理;
nginx 实现反向代理主要是通过 location 标签下的 proxy_pass 属性实现
server {
listen: 80;
server_name: localhost;
location / {
proxy_pass: http://127.0.0.1:8082;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2) 负载均衡
负载均衡就是对各服务器的负载进行动态的调整, 以尽量减少系统中各服务器负载不均衡的情况; ngnix 中负载均衡的实现主要是通过 upstream {} 来实现
upstream myservers {
ip_hash;
server 127.0.0.1:9090 weight = 2;
server 127.0.0.1:9191 weight = 3;
server 127.0.0.1:9292 down;
server 127.0.0.1:9393 backup;
}
# 服务器状态 共有 weight down backup max-fails
# weight 权重, 权重越大 ,负载越重
# down 表示此服务器不参与负载
# backup 其他所有非 backup 状态的服务器 down 或者忙的时候请求 backup 状态的机器, 此机器的负载一定最轻的;
# max-fails 最大失败次数 默认为 1 当超过最大 失败次数的时候, 会调用 proxy_next_upstream 模块定义的错误
# 负载均衡原则的其他配置方式 ip_hash fair url_hash
# ip_hash 根据请求的 ip 地址分配请求的服务器地址, 特定的 ip 访问特定的服务器
# fair 根据响应时间来分配, 响应时间短的分配得到的机会大
# url_hash 根据 url 的hash 结构来分配, 特定的 url 只访问对应的服务器
server {
listen: 80;
server_name: localhost;
location / {
proxy_pass http://myservers$request_uri;
# 设置被代理服务器的端口或套接字,以及URL
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上
}
}
进行如上设置之后,域名为 localhost 的请求会被代理 myservers 中定义的各个端口去,分配几率的大小根据 weight 进行分配,都忙的时候分配给 backup 服务器;
之上就是 nginx 主要的两大功能,下面再补充一些 nginx 配置方面的其他知识点:
1) location 语法
= 严格匹配,一旦匹配将停止查找,立即执行此条请求
~ 表示区分大小写匹配
~*表示不区分大小写匹配
!~表示区分大小写不匹配
!~*表示不区分大小写不匹配
^~表示匹配正则后停止匹配
2) proxy_pass url 生成规则 加入进入的是 http://127.0.0.1/proxy/1.html
1> location /proxy/ {
proxy_pass http://127.0.0.1/;
}
最终访问 http://127.0.0.1/1.html
2>location /proxy/ {
proxy_pass http://127.0.0.1;
}
最终访问 http://127.0.0.1/proxy/1.html
3>location /proxy/ {
proxy_pass http://127.0.0.1/see/;
}
最终访问 http://127.0.0.1/see/1.html
4>location /proxy/ {
proxy_pass http://127.0.0.1/see;
}
最终访问 http://127.0.0.1/see1.html
更多东西以后用到时补充~~~~~~~