Nginx的进程模型、反向代理配置、rewrite的使用、负载均衡配置、https配置、日志切割

Nginx的进程模型、反向代理配置、rewrite的使用、负载均衡配置、https配置、日志切割

进程模型

在nginx中,包括master与worker两类进程,master进程主要进行一些全局的初始化工作与worker进程的管理,事件处理均是在worker进程中执行的。nginx有两种启动模式,单进程启动与多进程启动

  • 单进程启动 系统中仅有一个进程,该进程同时充当master与worker两种角色
  • 多进程启动 系统中仅有一个master进程,但是至少包含一个worker进程。

在nginx中进程模型采用fork方式,预先分配worker的子进程数量有配置文件worker_processes确定,默认为1。master主进程负责创建监听接口,fork子进程以后,由worker进程处理客户连接,每个worker子进程独自处理任务。

反向代理配置

proxy_pass 设置代理的服务器地址

proxy_set_header 设置header

location /nginx {
            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_pass http://192.168.10.101:8080;
            proxy_redirect default;
        }

rewrite的使用

rewrite的主要作用是实现URL的重写

  • 将原本要访问/garlic的目录重写为/garlic-manage
  • 根据不同的浏览器将得到不同的结果
  • 防止盗链
  • 实现域名跳转
location /tomcat {
            rewrite ^/tomcat http://www.garlic.com/nginx permanent;
        }

浏览器输入www.garlic.com/tomcat然后重定向到www.garlic.com/nginx

负载均衡配置

upstream

ip_hash 默认值

权重 weight=x

fair 根据服务器的响应时间来分配请求

url_hash

可以标记backup\down等,如:

upstream nginx_upstream {
        server 192.168.10.101:8080 down; # 表示此台服务器永久宕机
        server 192.168.10.101:8081 backup; # 表示此服务器在所有机子宕机之后再启用
    }

负载均衡完整配置

upstream nginx_upstream {
        server 192.168.10.101:8080;
        server 192.168.10.101:8081;
    }

    server {
        listen       80;
        server_name  www.garlic.com;

        #charset koi8-r;

        access_log  logs/garlic.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
        location /nginx {
            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_pass http://nginx_upstream;
            proxy_redirect default;
        }
        location ~ .*\.(gif|jpg|jpeg|png|swf|js|css)$ {
           expires 5m;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

https配置

openssl生成ssl证书

#创建服务器私钥

openssl genrsa -des3 -out server.key 1024

#创建签名请求的证书(csr); csr核心内容是一个公钥

openssl req -new -key server.key -out server.csr

#去除使用私钥是的口令验证

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

#标记证书使用私钥和csr

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

#x509是一种证书格式


#server.crt就是我们需要的证书
nginx中https的配置
    # HTTPS server
    server {
        listen       443 ssl;
        server_name  garlic.com;

        ssl_certificate      /home/sam/opt/nginx/ssl/server.crt;
        ssl_certificate_key  /home/sam/opt/nginx/ssl/server.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

日志切割

在实际的生产环境中,nginx的日志增长速度是极其迅速的,为了避免日志文件的增加影响性能,同时为了方便日志进行分析处理,日志切割是必要的。那么如何进行nginx的日志切割呢?让我们来一起看看

mv access.log access.log20171206

kill -USR1 nginx [主进程号]

使用脚本编写定时任务来实现

日志切割脚本
#!/bin/sh

#  log_cut.sh
#  用于实现nginx日志切割
#
#  Created by iOS-Dev on 12/12/2017.
#  

## nginx 日志文件所在目录
LOGS_PATH=/home/sam/opt/nginx/logs

## 获取昨天的日期yyyy-MM-dd
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

## 移动文件
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log

## 向nginx主进程发送USR1信号,USR1 信号是重新打开日志文件
kill -USR1 $(cat /home/sam/opt/nginx/logs/nginx.pid)

编写linux定时任务,执行命令

crontab -e

定时任务内容

0 0 * * * /bin/bash /home/sam/opt/nginx/sbin/log_cut.sh # 每天0时0分进行日志切割
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值