现有用户机:ip 1.2.3.4
n台服务器:ip 1.1.1.1-1.1.1.n
server{
listen port; //这里指定的是这一个server监听的端口,ip是默认本机ip
server_name name; //匹配请求头中host字段的类型
location path {
proxy_pass http://ip:port/path;
proxy_set_header Host host; //配置请求头,可以自定义,host是取原头
proxy_set_header X-Real-IP remote_addr; //可以自定义,remote_addr源请求ip地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;//途径的所有ip
}
}
server {
listen 8999;
root /var/www/test; //指定静态资源地址
location / {
try_files uri uri/ =404; //访问ip:8999/ 自动寻找/var/www/test下的资源,如果是文件就返回,如果是目录返回index/index.html,如果都不是返回404
}
}
负载均衡
upstraem upstream_name{
ip_hash;
server ip:port1 weight=1;
server ip:port2 weight=2; //weight指定权重,权重越大压力越大
server ip:port3 backup; //其他都g了就用这个
}
server{
listen 8080;
server_name copel.com;
location / {
proxy_pass http://upstream_name //这样使用
}
}
https配置,这里使用的是openssl做的证书,只用于学习研究
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/nginx/ssl/nginx.key \
-out /etc/nginx/ssl/nginx.crt
参数介绍:
sudo
│
└─ 用管理员权限
openssl
│
└─ 使用 OpenSSL
req
│
└─ 进行证书请求相关操作
-x509
│
└─ 直接生成 X.509 证书
-nodes
│
└─ 私钥不设置额外密码
-days 365
│
└─ 证书有效期 365 天
-newkey rsa:2048
│
└─ 创建一个 2048 位 RSA 新私钥
-keyout ...
│
└─ 私钥保存到 nginx.key
-out ...
│
└─ 证书保存到 nginx.crt
证书生成完成之后不需要额外重启,手动配置好nginx之后再重启
server {
listen 443 ssl;
server_name 192.168.21.128; //servername是域名,如果用户访问的是这个域名才会匹配
ssl_certificate /etc/nginx/ssl/nginx.crt; //这里就是证书存放的位置
ssl_certificate_key /etc/nginx/ssl/nginx.key;
...
}
http跳转https
server{
listen 80;
server_name xxx;
return 301 https://hostrequest_uri; #host是用户请求的域名,request_uri是用户请求的url
}