默认配置

nginx的主配置文件一般在/etc/nginx/nginx.conf,自定义配置文件放在/etc/nginx/conf.d/*.conf,Nginx配置文件会由如下几个部分构成:

全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

server块:配置虚拟主机的相关参数,一个http中可以有多个server。

location块:配置请求的路由,以及各种页面的处理情况。

默认文件

重定向页面配置

location / {
  error_page 404 @redict;
}
location @redict {
# 将请求反向代理到上游服务器处理
  proxy_pass http://localhost:9000;
}

别名配置

location /blog {
  alias /home/barret/www/blog/;
}

缓存时间配置

location ~* .(?:ico|css|js|gif|jpe?g|png)$ {
  expires 30d;
  add_header Vary Accept-Encoding;
  access_log off;
}

反向代理

server{
...
  location / { 
    proxy_pass http://127.0.0.1:8080; ##需要代理的服务器地址 
    index index.html;
  }
...
}

https配置

server {
...
listen 443 ssl;
# 这里是你的域名
server_namewww.example.com;
index index.html index.htm index.php default.html default.htm default.php;
# 网站目录
root /usr/share/nginx/html/index.html;
# SSL证书路径
ssl_certificate /etc/letsencrypt/live/www.vpser.net/fullchain.pem;
# SSL证书密钥路径
ssl_certificate_key /etc/letsencrypt/live/www.vpser.net/privkey.pem;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
...
}
#强制跳转https
server {
listen ServerIP:80;
server_name example.com;
return 301 https://$server_name$request_uri;
}

负载均衡配置

http {
...
# 自定义我们的服务列表 
  upstream myserver{ 
    server 127.0.0.1:8080; 
    server 127.0.0.1:8090;
   }
  location / { 
    proxy_pass http://myserver; #核心配置
    proxy_connect_timeout 10; #超时时间,单位秒 
  }
... 
}

负载均衡策略
轮询(默认方式): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
权重(weight): weight 代表权重,默认为 1,权重越高被分配的客户端越多,权重越大,能力越大,责任越大,处理的请求就越多。
ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。