目录
Nginx常用配置汇总
1. 反向代理简要配置
1.1. HTTP方式的代理转发配置
server {
listen 80;
server_name www.example.cn;
location / {
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass //192.168.1.199:8080;
}
}
1.2 HTTPS方式的代理转发配置
server {
listen 443;
server_name www.example.com;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
location / {
proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://192.168.1.197:8443;
}
}
2. 正向HTTP代理使用
背景:子网中存在两台服务器AB,服务器A可以连接到互联网,服务器B不能上网,服务器B需要使用服务器A中的nginx正向代理功能使其连接到互联网上。
2.1 配置正向代理
server {
resolver 8.8.8.8;
resolver_timeout 5s;
listen 0.0.0.0:8080;
location / {
proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $http_host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}
}
2.2 客户端使用正向代理
全局HTTP代理
# 添加全局HTTP代理
export http_proxy="//10.132.10.116:8080"
# 删除全局HTTP代理
unset http_proxy
yum使用代理
# 编辑yum.conf文件
vim /etc/yum.conf
# 底部添加
proxy = //10.132.10.116:8080
据网络上文章所说,nginx的正向代理不支持HTTPS的方式
3. HTTPS证书生成
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
4. 代理缓存配置
4.1 创建缓存目录并授与权限
mkdir -p /usr/local/nginx/temp
chmod -R 755 /usr/local/nginx/temp
缓存目录的创建位置可以随意,但必须具有读写权限
4.2 利用缓存目录配置代理缓存
http {
# levels=1:2 配置缓存空间有两层hash目录
# keys_zone=cache_zone:50m 配置缓存的名称及缓存空间大小
# inactive 设置缓存有效期,1d表示在1天时间内没有被访问则自动删除
# max_size 硬盘缓存的最大大小
proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=10g;
server {
listen 80;
server_name www.testcache123.com;
location / {
proxy_cache cache_one; # 指定上面配置的缓存名称
proxy_cache_valid 200 302 1h; # 200和302请求缓存1小时
proxy_cache_valid 301 1d; # 301请求缓存1天
proxy_cache_key $host$uri$is_args$args; # 缓存请求匹配的key
expires 30d;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass //www.wangjunneil.com;
}
}
}
5. 跨域请求配置
5.1 跨域消息头说明
名称 | 含义 |
---|---|
Access-Control-Allow-Origin | 授权那些地址或者域名可以访问 |
Access-Control-Allow-Credentials | 是否响应与该请求可以暴露 |
Access-Control-Allow-Methods | 指定运行请求的HTTP方法 |
5.2 具体配置明细
在nginx中,若设置在http段内则对所有server都启用,设置在server段内则只对该server启用,设置在location段内则对该请求启用。
server {
listen 80;
server_name vinny.cc;
location / {
# 跨域请求头
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers true;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass //localhost:8080;
client_max_body_size 1000m;
}
}
6. 负载均衡配置
6.1 简单的权重示例
upstream backend {
server 192.168.1.197:80 backup;
server 192.168.1.196:80 weight=1;
server 192.168.1.197:80 weight=3;
# ip_hash;
}
server {
location / {
proxy_pass //backend;
}
}
Nginx自带的负载均衡策略有轮询(默认),权重和ip_hash,第三方的有fair和url_hash等配置方式。
6.2 负载参数说明
名称 | 含义 |
---|---|
down | 表示当前server不参与负载 |
weight | 默认为1,weight越大,负载的权重就越大,分发到的请求就越多 |
max_fails | 允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream 模块定义的错误 |
fail_timeout | max_fails多少次失败后,暂停请求的时间 |
backup | 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻 |
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2017/03/nginx-general-config/