0
点赞
收藏
分享

微信扫一扫

二、Nginx 配置

查拉图斯特拉你和他 2022-03-21 阅读 16
nginx

一、Nginx 配置


# `Worker`进程运行用户
#user  nobody;
user  root;
# 工作进程数目,根据硬件配置(一般是和`CPU`数量一致,或者`CPU`数量的`2`倍,能达到最佳性能)
worker_processes  1;

# 全局错误日志文件,以及日志级别(`debug`、`info`、`notice`、`warn`、`error`、`crit`,由日志最多到最少) 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

# 进程`pid`文件
#pid        logs/nginx.pid;


# 工作模式
events {
    # 每个`Worker`进程最大连接数
    # 说明:`Nginx`支持的总连接数 = worker_connections * worker_processes
    worker_connections  1024;
}

# 服务器
# http {
# ...
# }

1. http

http {
	# `Nginx`支持哪些多媒体类型
	include       mime.types;
	# 默认文件类型
	default_type  application/octet-stream;
	
	# 日志格式
	#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
	#                  '$status $body_bytes_sent "$http_referer" '
	#                  '"$http_user_agent" "$http_x_forwarded_for"';
	
	# 访问日志,并使用上面的格式
	#access_log  logs/access.log  main;
	
	# 开启高效文件传输模式
	sendfile        on;
	# 开启防止网络阻塞模式
	#tcp_nopush     on;
	
	# 超时闲置时间,长连接超时时间(单位秒)
	#keepalive_timeout  0;
	keepalive_timeout  65;
	
	# 开启`gzip`压缩输出
	#gzip  on;
	
	# 站点
	# server { 
	# ... 
	# }
}

2. server

server {
    # 监听端口(默认:80)
    # listen       80 default;
    listen       80;
    # 站点名,外网访问的域名(默认:"",多个空格隔开,支持通配符与正则)
    # 通配符 *.qs.com www.qs.*
    server_name  localhost;

    # 字符集
    #charset koi8-r;

    # 访问日志
    #access_log  logs/host.access.log  main;

    # `server.root`所有`localhost`共享(绝对路径)
	#root /usr/www/qs/

    # 站点路径(过滤器,匹配`/`的所有请求)
    location / {
        # 站点根路径(相对路径)
        root   html;
        # 站点页面
        index  index.html index.htm;
    }

    # `404`页面
    #error_page  404              /404.html;

    # 将服务器错误页重定向到静态页面`/50x.html`
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }  
}

3. location

# 将PHP脚本代理到Apache侦听127.0.0.1:80
location ~ \.php$ {
    proxy_pass   http://127.0.0.1;
}
# 将PHP脚本传递给FastCGI服务器侦听127.0.0.1:9000
location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
}
# 如果Apache的文档root拒绝访问.htaccess文件
# 与nginx的一个同意
location ~ /\.ht {
    deny  all;
}

3.1 root 站点根目录

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

3.2 alias 站点别名

location /qs {
	alias  /www/qs;
	index  index.html index.htm;
}

4. upstream

属性描述
service反向服务地址:加端口
weight权重
max_fails失败多少次 认为主机已挂掉则,踢出
fail_timeout踢出后重新探测时间
backup备用服务
max_conns允许最大连接数
slow_start当节点恢复,不立即加入

4.1 负载均衡算法

  • url_hash:第三方
  • least_conn最少链接
  • least_time最小的响应时间。

5. 日志配置

log_format  main  '$remote_addr - $remote_user [$time_local]   "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
                  
access_log  logs/access.log  main;

5.1 基于域名打印日志

# 基于域名打印日志
access_log  logs/$host.access.log  main;

5.2 error日志


5.3 指定客户端输出debug级别日志

events {
	debug_connection 192.168.0.147; 
	debug_connection 10.224.57.0/200;
}

二、Nginx案例


1. 动静分离


1.1 基于目录动静分离

server {
	listen 80;
	server_name *.qs.com;
	root /usr/www/qs;
	
	location / {
		index qs.html;
	}
	
	# 配置`/static`
	location /static {
		alias /usr/www/static;
	}
 }

1.2 基于正则动静分离

# 配置`~* \.(gif|jpg|png|css|js)$`
location ~* \.(gif|jpg|png|css|js)$ {
	root /usr/www/static;
}

2. 防盗链

location ~* \.(gif|png|jpg|swf|flv)$ {
	root html;

	# 防盗链
	valid_referers none *.qs.com;
	if ($invalid_referer) {
		rewrite ^/ http://www.qs.com/image/403.png;
		#return 404;
	}
}
# 防盗链
valid_referers none blocked *.qs.com;
if ($invalid_referer) {
	return 403;
}

3. 下载限速

location /download {
	# 限制每秒下载速度
	limit_rate 1m;
	# 限制`30`秒之后再下载
	limit_rate_after 30m;
}

5. IP黑名单

# 如果Apache的文档root拒绝访问.htaccess文件
# 与nginx的一个同意
location ~ /\.ht {
    deny  all;
}
# 封禁指定`IP`
deny 192.168.0.1;
# 开放指定`IP`
allow 192.168.0.2;

# 封禁指定`IP`段
deny 192.168.0.0/24;
# 开放指定`IP`段
allow 192.168.0.25/30;

# 封禁所有
deny all;
# 开放所有
allow all;

# `http`配置块中引入`balck.ip`黑名单文件
include black.ip;
# 创建黑名单文件
echo 'deny 192.168.0.132;' >> balck.ip

6. 子域名站点

server {
	listen 80;
	server_name *.qs.com;
	root /data/www/$host;
	access_log logs/$host.access.log;
	location / {
		index index.html;
	}
}

7. nginx_status

location /nginx_status {
	stub_status on;
	access_log   off;
}

8. stub_status

location = /basic_status {
    stub_status;
}
举报

相关推荐

0 条评论