初始Nginx
Posted 从乙方到甲方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初始Nginx相关的知识,希望对你有一定的参考价值。
nginx("engine x")是一款高性能的HTTP和反向代理(指以代理服务器接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端)服务器。它能够支持高达50000个并发连接数的响应,而内存、CPU等系统资源消耗非常低、运行非常稳定。
Nginx配置文件主要分为4部分:main(全局配置)、server(虚拟主机配置)、upstream(主要为方向代理、负载均衡相关配置)和location(目录匹配配置)。
main部分的指令将影响其他所有部分;server部分的指令主要用于指定虚拟主机域名、IP和端口;location部分用于匹配网页位置(例如,根目录“/”、“/images”等);upstream的指令用于设置反享代理及后端服务器的负载均衡。
location部分会继承server部分的指令,而server部分会继承main部分的指令;upstream即不会继承指令也不会影响其他部分。它有自己的特殊指令,不需要在其他地方运用。
#指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍)
worker_processes 4;
#使用的用户和组
user www www;
#指定错误日志存放的路径,错误日志记录级别可选项为:[debug | info | notice | warn | error | crit]
error_log logs/error.log;
#指定pid存放的路径
pid logs/nginx.pid;
events {
#使用的网络I/O模式,Linux系统一般采用epoll模型
use epoll;
#允许连接数
worker_connections 10240;
}
#处理http请求
http {
server_names_hash_bucket_size 256;
server_names_hash_max_size 1024;
include mime.types;
default_type application/octet-stream;
#设置使用的字符集,如果一个网站有多种字符集,不要随便设置,应在html进行设置
#charset utf-8
#设置日志的记录格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent $request_body "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
server_tokens off;
#limit_req_zone $binary_remote_addr zone=req_zone:50m rate=3r/s;
#limit_conn_zone $binary_remote_addr zone=conn_zone:50m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
fastcgi_intercept_errors on;
proxy_intercept_errors on;
#设置客户端请求最大单个文件字节数
client_max_body_size 100M;
#缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 1M;
#跟后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 600;
#连接成功后等候后端服务器响应时间_已经进入后端的排队之中等候处理
proxy_read_timeout 600;
#后端服务器数据回传时间_在规定时间之内后端服务器必须传完所有的数据
proxy_send_timeout 600;
#代理请求缓存区_这个缓存区间会保存用户的头信息以供Nginx进行规则处理_一般保存头部信息即可
proxy_buffer_size 128k;
#同上 告诉Nginx保存单个用的几个Buffer最大使用多大空间
proxy_buffers 4 64k;
#如果系统很忙的时候可以申请更大的proxy_buffers 官方推荐*2
proxy_busy_buffers_size 128k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
#开启gzip压缩
gzip on;
gzip_disable "msie6";
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types *;
gzip_vary on;
upstream msg_server_pool{
server 192.168.1.10:80 weight=4 max_fails=2 fail_timeout=30s;
server 192.168.1.11:80 weight=4 max_fails=2 fail_timeout=30s;
server 192.168.1.12:80 weight=4 max_fails=2 fail_timeout=30s;
}
#表示虚拟主机,可配置多个
server {
#监听端口
listen 80;
server_name localhost;
#允许对不同的URI进行不同的配置,既可以使用字符串,也可以使用正在表达式。使用正则表达式,必须使用以下前缀:
# ~*,表示不区分大小写的匹配
# ~,表示区分大小写的匹配
#在匹配过程中,先匹配字符串,再匹配正则表达式。匹配谁写在前面谁先匹配到,匹配到第一个,会停止搜索。如果匹配正则则使用正则匹配到的结果;如果没有则使用字符串匹配到的结果。
#可以使用前缀“^~”来禁止匹配到字符串后,再去匹配正则表达式。即字符串匹配到就停止。
#可以使用“=”来进行精确匹配,如果找到,则停止。
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name www.demo.com;
location /msg/ {
proxy_pass http://msg_server_pool;
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
}
access_log /data/logs/msg.demo.com_access.log;
}
}
以上是一部分配置,实际配置要根据不同的场景进行相关的配置。
以上是关于初始Nginx的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?
如何在使用cardview的片段中初始化gridlayoutmanager?
vscode 用户代码片段 vue初始化模板 Snippet #新加入开头注释 自动生成文件名 开发日期时间等内容
环境初始化 Build and Install the Apache Thrift IDL Compiler Install the Platform Development Tools(代码片段