1常用命令
cd ./nginx/sbin
#查看nginx版本号
./nginx -v
#启动nginx
./nginx
#停止nginx
./nginx -s stop
#重新加载nginx,使配置项生效
./nginx -s reload
2 配置文件nginx.conf
#配置默认文件位置
cd ./nginx/conf/nginx.conf
3 nginx使用场景
3.1跨域(反向代理+静态文件配置)
Nginx跨域在前后台项目中被广泛使用,用于保证前后台的接口的连通性。
server {
listen 511;
server_tokens off;
#add_header X-Frame-Options SAMEORIGIN;
#前端静态文件配置
location / {
root /usr/share/nginx/html/web;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
#跨域(反向代理)配置
location /api/ {
proxy_pass http://gateway:9007/;
proxy_connect_timeout 30s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_CLIENT_IP $remote_addr;
}
}
静态文件配置关注点
- 静态文件的路径要确保正确
在容器化的nginx服务中,静态文件的路径应是容器内部的静态文件路径
反向代理配置关注点
(1)proxy_pass地址要确保正确
在前后台分离的项目中,proxy_pass应是gateway的地址
若项目部署在k8s时,首先查询一下kube-dns插件(或coreDns)是否安装
kubectl -n kube-system get svc | grep dns
存在kube-dns插件,则proxy_pass:协议://deploymentName:gatewayPort
若不存在kube-dns插件(或coreDns)
则proxy:协议://宿主机:gatewayPort的对外端口
若项目是docker部署时,首先查询一下,docker-compose-xxx.yml文件的网络格式
network_mode: host 表示共有宿主机网络空间,proxy_pass:协议://宿主机IP:容器内部端口;
network_mode:bridge,或容器都在同一个docker-network下时,容器名称可以自动解析为容器IP,则proxy_pass:协议://容器名称:容器内部端口
3.2 正向代理
Nginx 服务器作为客户端代理,转发客户端发起的请求到目标服务器,并将目标服务器的响应返回给客户端的过程。简单来说,正向代理隐藏了真实的客户端,使得客户端可以通过代理服务器访问其他服务器或资源。
http {
server {
listen 8088;
server_name 192.168.2.43;
location / {
# 使用Google的DNS解析器,你也可以替换成其他可用的DNS解析器
resolver 8.8.8.8;
proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 10s;
proxy_read_timeout 30s;
}
}
}
3.3 负载均衡
项目中的负载均衡主要体现在高并发情况下的读写分离、均衡web服务器集群负载、均衡应用服务集群负载等
以简单的后台接口均衡举例:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
# 反向代理配置
#配置一:指定权重
upstream server_list{
# 业务接口
# 权重weight值越高,代表请求的频率越频繁
server 192.168.2.44:8084 weight=1;
server 192.168.2.44:8085 weight=2 backup; #backup 代表先不使用,等其他节点都不可用后再使用
}
#配置二:根据IP的hash来为请求者固定分配一个服务端,主要用于保持session
upstream server_list{
# 业务接口
ip_hash; #还有其他第三方插件,应根据实际需求选择
server 192.168.2.44:8084;
server 192.168.2.44:8085 dwon; #down 代表 该节点不可用,不在接收请求
}
server {
listen 8089;
server_name localhost;
location / {
proxy_pass http://server_list;
proxy_redirect default;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
4、使用注意事项
4.1 关闭 server_tokens,避免在错误界面返回nginx版本
4.2nginx.conf配置修改应及时重载配置
有些参数的配置在nginx重启后,并不生效,需要手动重载配置,
如:add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
重新加载nginx.conf
nginx -s reload