您的位置:首页 > 理论基础 > 计算机网络

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

2017-12-26 21:11 1436 查看

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分进行日志切割
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx 负载均衡