Nginx 常用配置
不多说废话,直接上nginx.conf简洁版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#使用哪个用户启动nginx user frankwong; #nginx 工作进程数,一般设置成CPU核数 worker_processes 4 ;
# [ debug | info | notice | warn | error | crit ] 错误日志的位置 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #nginx进程号保存文件 #pid logs/nginx.pid; events { #use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] 使用epoll(linux2. 6 的高性能方式)
use epoll;
#每个worker最大连接数,受限于进程最大打开文件数目,参考ulimit -n
worker_connections 1024 ;
} http { #文件扩展名与文件类型映射表
include mime.types;
#默认文件类型 bin exe dll
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 on;
#上传文件大小限制
client_max_body_size 20m
#设定请求缓冲
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
server {
#监听端口号
listen 80 ;
#配置基于名称的虚拟主机,通过它可以进行多域名转发
server_name localhost;
#默认编码
charset utf- 8 ;
#设定本虚拟主机的访问日志
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#错误页面
error_page 404 / 404 .html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
} |
1.开启gzip压缩
找到#gzip on这行,修改成如下内容即可
1
2
3
4
5
6
7
8
9
|
gzip on; gzip_min_length 1 k;//只压缩大于 1 K的文件
gzip_buffers 4 16 k;
#gzip_http_version 1.0 ;//默认 1.1
gzip_comp_level 2 ;//压缩级别, 1 -10 ,数字越大压缩的越好,时间也越长
gzip_min_length 1000 ;
gzip_types text/plain text/css application/x-javascript; gzip_vary off;//Squid等缓存服务有关,on的话会在Header里增加 "Vary: Accept-Encoding"
gzip_disable "MSIE [1-6]." ; //取消对IE 6 的支持
|
2.设置Nginx 监控
1
2
3
4
5
6
|
location ~ ^/NginxStatus { stub_status on;//开启状态查看
access_log off;//关闭日志
allow 127.0 . 0.1 ;//设置仅能本机查看
deny all ;
} |
生效之后输入http://127.0.0.1/NginxStatus 即可看到相关状态信息
1
2
3
4
|
Active connections: 328 server accepts handled requests 9309 8982 28890 Reading: 1 Writing: 3 Waiting: 324
|
3.设置静态资源的缓存
1
2
3
4
5
|
location ~ .(htm|html|gif|jpg|jpeg|png|ico|rar|css|js|zip|txt|flv|swf|doc|ppt|xls|pdf)$ { root /opt/webapp/cache;//静态资源路径
access_log off;
expires 24 h;//cache有效时间 这边设置成 1 天
} |
4.设置图片防盗链
1
2
3
4
5
6
7
|
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)${ expires 30 d;
valid_referers none blocked dropbag.sinaapp.com*;
if ($invalid_referer) {
rewrite ^/ http://gitsea.com/ 404 .html;#return 404 ;
}
} |
5.平滑变更nginx配置
输入
1
|
/usr/local/nginx/sbin/nginx -t |
如果结果显示
1
2
|
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully |
表示没有问题,则可以进行平滑重启,输入如下指令
nginx -s reload
其他常用指令如
nginx -s stop 停止nginx服务
6.日志切割
nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,所以需要写一个nginx日志切割脚本来自动切割日志文件。
第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。
第二步向nginx主进程发送USR1信号。
nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。
脚本文件nginx_log.sh如下
1
2
3
4
5
6
7
8
9
10
11
12
|
#nginx日志切割脚本 #!/bin/bash #设置日志文件存放目录 logs_path= "/usr/local/nginx/logs/"
#设置pid文件 pid_path= "/usr/local/nginx/nginx.pid"
#重命名日志文件 mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" + "%Y%m%d" ).log
#向nginx主进程发信号重新打开日志 kill -USR 1 `cat ${pid_path}`
|
crontab 设置作业
0 0 * * * bash /usr/local/nginx/nginx_log.sh
这样就每天的0点0分把nginx日志重命名为日期格式,并重新生成今天的新日志文件。
7.反向代理和负载均衡
负责均衡需功能需要在编译nginx的时候把ngx_http_upstream_module模块编译进去
假设有3台tomcat服务器ip分别为192.168.1.101,192.168.1.102,192.168.0.103,我们需要用nginx对这3台tomcat服务器做负载均衡,使得在高访问量的情况下能够对req做分发。
配置如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
upstream tomcatserver{ #weigth参数表示权值,权值越高被分配到的几率越大 server 192.168 . 1.101: 8080 weight= 5 ;
server 192.168 . 1.102: 8080 weight= 1 ;
server 192.168 . 1.103: 8080 weight= 6 ;
} #对 "/" 启用负载均衡
location / { proxy_pass http://tomcatserver; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;//通过X-Forwarded-For获取用户真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10 m;//允许客户端请求的最大单文件字节数
client_body_buffer_size 128 k;//缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 300 ;//nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 300 ;//后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 300 ;//连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4 k;//设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32 k;
proxy_busy_buffers_size 64 k;//高负荷下缓冲大小
proxy_temp_file_write_size 64 k;//设定缓存文件夹大小,大于这个值,将从upstream服务器传
} |
常用命令
-c </path/to/config> 为 Nginx 指定一个配置文件,来代替缺省的。
-t 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
-v 显示 nginx 的版本。
-V 显示 nginx 的版本,编译器版本和配置参数。
问题
关于nginx并发数的计算,参加Nginx Wiki
1
2
3
4
5
6
7
8
|
worker_connections Syntax: worker_connections number Default: The worker_connections and worker_proceses from the main section allows you to calculate maxclients value: max_clients = worker_processes * worker_connections In a reverse proxy situation, max_clients becomes max_clients = worker_processes * worker_connections/ 4
Since a browser opens 2 connections by default to a server ,and nginx uses the fds (file descriptors) from the same pool to connect to the upstream backend .
|
翻译
做http服务:浏览器只有1个连接 所以max_clients = worker_processes * worker_connections
做反向代理:从浏览器到nginx,然后从nginx到后端, 从后端到nginx,再由nginx到浏览器。max_clients = worker_processes * worker_connections/4
相关推荐
nginx.conf nginx常用配置
Nginx常用配置、负载均衡及优化
Nginx常用配置、负载均衡及优化
nginx常用配置参数解释说明详细文档笔记记录
本主题将详细探讨Nginx的常用配置文件及其相关知识点。 1. **主配置文件**:`nginx.conf` Nginx的核心配置文件通常位于`/etc/nginx/nginx.conf`(在不同的操作系统上位置可能不同)。它包含了全局块、事件块、http...
nginx常用bat批处理命令,放在nginx同级目录下使用,可快速的重启、停止、关闭nginx。 quit.bat(退出Nginx) reload.bat(重启Nginx) stop.bat(停止Nginx)
Nginx常用配置 Nginx配置。 不是最强大,最有生产力或最好的。 只是有用的配置,我想在开箱即用的默认Nginx包中看到 :grinning_squinting_face: 奖励:nginx的fail2ban,filebeat和docker-compose配置:) 警告:我住...
在文档"nginx常用命令.doc"中,提到了一些核心的Nginx操作命令,我们将详细探讨这些命令及其用途。 首先,启动Nginx的命令通常是`/usr/local/nginx/sbin/nginx`,这会按照默认配置文件(如`/usr/local/nginx/conf/...
1. nginx -c filename:这个命令的作用是设置Nginx的配置文件。默认情况下,Nginx的配置文件路径为/usr/share/nginx/conf/nginx.conf。使用这个命令,我们可以指定其他路径的配置文件。例如,我们可以使用nginx -c /...
Nginx的常用配置文件,适合负载均衡设置等
在Nginx服务器的配置中,超时时间的设置至关重要,因为它关系到服务器对客户端请求的响应速度和系统的稳定性。本文将深入讲解如何在Nginx中配置超时时间,并介绍相关的参数设置。 首先,我们需要了解何时需要设置...
3. Nginx常用配置指令: - `listen`:指定服务器监听的端口。 - `server_name`:设置虚拟主机的域名。 - `root`或`index`:定义网站根目录和默认首页。 - `access_log`和`error_log`:设置日志文件路径。 - `...
**Nginx 1.19.1及常用配置文档详解** Nginx是一款高性能的Web服务器和反向代理服务器,被广泛应用于互联网行业,以其轻量级、高并发处理能力而著称。Nginx 1.19.1是Nginx的最新稳定版本,它在1.19.0的基础上进行了...
Nginx 的常用命令包括检查配置文件、指定其他配置文件、启动 Nginx、停止 Nginx、重启 Nginx 等命令。这些命令可以帮助用户快速启动和管理 Nginx 服务。 九、配置示例 配置示例包括 web 服务器、反向代理、动静...
**Nginx常用配置** - **虚拟主机配置**:通过`server`块,你可以配置多个虚拟主机,以服务于不同的域名或端口。 - **反向代理**:通过`proxy_pass`指令,Nginx可以作为反向代理,转发请求到后端的应用服务器。 - **...
Nginx 常用内部错误概述 Nginx 作为一个流行的 Web 服务器软件,在实际应用中经常会遇到各种错误。这些错误可能来自于配置不当、资源限制、网络连接问题等多方面。为了帮助开发者和运维人员更好地解决这些问题,...
### Nginx 常用配置命令 Nginx 是一款广泛使用的高性能 HTTP 和反向代理 Web 服务器,它能够实现负载均衡、反向代理等多种功能。在实际部署和运维过程中,我们经常需要对 Nginx 的配置文件进行编辑,以便更好地满足...
**Nginx常用配置** - **虚拟主机**: 通过配置多个server块,Nginx可以托管多个网站在同一台服务器上。 - **重定向**: 可以配置301或302重定向,实现URL的跳转。 - **URL路由**: 使用location块进行URL匹配,根据...