Nginx 配置 - 学习笔记
- 目录结果
- 虚拟主机配置
- Windos下的绝对路径
- 反向代理 + 负载均衡
- 负载均衡策略
- 轮训(默认)
- 权重
- ip_hash
- 网关
- 参考资料
目录结果
D:\nginx-1.16.1\html
| 50x.html
| index.html
|
+---a
| index.html
|
+---b
| index.html
|
+---c
| index.html
|
\---d
index.html
虚拟主机配置
nginx
作为web
服务器跑起来
只设置了 server
块下的 listen
, server_name
,location
其它都没动server
可以配多个。
worker_processes 1; # 处理并发的数量,越大处理的并且量越大
events {
worker_connections 1024;# 支持最大连接数
}
http {
include mime.types;
default_type application/octet-stream;
proxy_intercept_errors on; # 开启自定义错误页面
sendfile on;
keepalive_timeout 65;
# 定义一个 web 服务
server {
# 监听端口
listen 80;
# 服务的域名或IP,多个用空格分隔
server_name localhost 127.0.0.1;
# 映射到根路径 /
location / {
# web服务根路径对应的目录
root html;
# 绝对路径
# root E:\\demo\\page;
# 文件夹下默认页面,多个用空格分隔,优先级从左高右低
index index.html index.htm;
}
# 自定义错误页面。 500 502 503 504 错误重定向到 /50x.html
error_page 500 502 503 504 /50x.html;
# 定义了一个名为 /50x.html 的位置(location)
location = /50x.html {
# 该位置的根目录在 html
root html;
}
# 自定义错误页面
error_page 404 ;
}
}
因为上面的配置所以访问 localhost
或127.0.0.1
皆可。
Windos下的绝对路径
server {
listen 8000;
server_name 127.0.0.1 localhost;
location / {
root E:\\demo\\page; # 绝对路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
反向代理 + 负载均衡
负载均衡
使用默认的轮训
策略
先定义3个web
服务作集群
。开放端口 8080 - 8082
,最后定义反向代理
服务开放80
端口
worker_processes 1; # 处理并发的数量,越大处理的并且量越大
events {
worker_connections 1024;# 支持最大连接数
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 服务器 1 端口 8080
server {
listen 8080;
server_name localhost;
location / {
root html/a/;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 服务器 2 端口 8081
server {
listen 8081;
server_name localhost;
location / {
root html/b/;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 服务器 3 端口 8082
server {
listen 8082;
server_name localhost;
location / {
root html/c/;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 用于负载均衡的集群(默认轮训,从上到下每台一次)。 集群名称:myserver
upstream myserver {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80; # 监听端口
server_name localhost; # 服务的域名或IP,多个用空格分隔
location / {
proxy_pass http://myserver; # 代理指定上面定义的集群 myserver
}
# 定义50x 错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# 定义40x 错误页面
error_page 400 401 402 403 404 /40x.html;
location = /40x.html {
root html;
}
}
}
负载均衡策略
- max_fails
- fail_timeout
轮训(默认)
按顺序来,每人一次。
权重
upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com backup;
}
- weight
权重大的,能者多劳
上面总共3个服务器在跑。(backup
是后补,只有其它服务器都奔溃了,会才启用它)
第一个权重5
,另外两个没写则默认1
。权重总数是7
,那就在7
次访问中:backend1.example.com
被访问5
次127.0.0.1:8080
被访问1
次unix:/tmp/backend3
被访问1
次 - max_fails = 3
- fail_timeout = 30
127.0.0.1:8080
节点30
秒内出现3
次访问失败,判定节点不可用。此后10
秒内请求不会向其转发到请求,10
秒后重新检测其是否可用。
ip_hash
同一个ip
始终被分配到同一台服器上
upstream backend {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
网关
定义用户服务
在 8081
server {
listen 8081;
server_name localhost;
location / {
root gateway/user;
index index.html index.htm;
}
}
定义产品服务
在 8082
server {
listen 8082;
server_name localhost;
location / {
root gateway/product;
index index.html index.htm;
}
}
定义网关
在 80
通过路径 /api-user
和 /api-product
访问
server {
listen 80;
server_name localhost;
# 路由到用户
location /api-user {
proxy_pass http://localhost:8081/;
}
# 路由到产品
location /api-product {
proxy_pass http://localhost:8082/;
}
}