33

史上最全的Nginx配置参数中文说明

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzA5MTkxNTMzNg%3D%3D&%3Bmid=2650265559&%3Bidx=7&%3Bsn=f4538057564fd199b2997830161fb754
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

UNFnMr7.gif

作者 | Ably  

来源: https://segmentfault.com/a/1190000005789137

Nginx配置参数中文详细说明:

#定义Nginx运行的用户和用户组

user www www;

#

#nginx进程数,建议设置为等于CPU总核心数.

worker_processes 8 ;

#

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]

error_log /var/log/nginx/error.log info ;

#

#进程文件

pid /var/run/nginx.pid;

#

worker_rlimit_nofile 65535 ;

#

#工作模式与连接数上限

events

{

use epoll ;

#单个进程最大连接数(最大连接数=连接数*进程数)

worker_connections 65535 ;

}

#

#设定http服务器

http

{

include mime.types; #文件扩展名与文件类型映射表

default_type application/octet-stream; #默认文件类型

#charset utf-8; #默认编码

server_names_hash_bucket_size 128 ; #服务器名字的hash表大小

client_header_buffer_size 32k ; #上传文件大小限制

large_client_header_buffers 4 64k ; #设定请求缓

client_max_body_size 8m ; #设定请求缓

# 开启目录列表访问,合适下载服务器,默认关闭.

autoindex on ; # 显示目录

autoindex_exact_size on ;

autoindex_localtime on ;

sendfile on ;

tcp_nopush on ; # 防止网络阻塞

tcp_nodelay on ; # 防止网络阻塞

keepalive_timeout 120 ;

fastcgi_connect_timeout 300 ;

fastcgi_send_timeout 300 ;

fastcgi_read_timeout 300 ;

fastcgi_buffer_size 64k ;

fastcgi_buffers 4 64k ;

fastcgi_busy_buffers_size 128k ;

fastcgi_temp_file_write_size 128k ;

# gzip模块设置

gzip on ; #开启gzip压缩输出

gzip_min_length 1k ;

gzip_buffers 4 16k ;

gzip_http_version 1 . 1 ;

gzip_comp_level 2 ;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on ;

#开启限制IP连接数的时候需要使用

#limit_zone crawler $binary_remote_addr 10m;

##upstream的负载均衡,四种调度算法(下例主讲)##

#虚拟主机的配置

server

{

# 监听端口

listen 80 ;

# 域名可以有多个,用空格隔开

server_name ably.com;

# HTTP 自动跳转 HTTPS

rewrite  ^(.*) https:// $server_name $1 permanent ;

}

server

{

# 监听端口 HTTPS

listen 443 ssl;

server_name ably.com;

# 配置域名证书

ssl_certificate C:\WebServer\Certs\certificate.crt;

ssl_certificate_key C:\WebServer\Certs\private.key;

ssl_session_cache shared:SSL: 1m ;

ssl_session_timeout 5m ;

ssl_protocols SSLv2 SSLv3 TLSv1;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers on ;

index index.html index.htm index.php;

root /data/www/;

location ~ .*\.(php|php5)?$

{

fastcgi_pass 127.0.0.1:9000 ;

fastcgi_index index.php;

include fastcgi.conf;

}

# 配置地址拦截转发,解决跨域验证问题

location /oauth/{

proxy_pass https://localhost:13580/oauth/;

proxy_set_header HOST $host ;

proxy_set_header X-Real-IP $remote_addr ;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;

}

# 图片缓存时间设置

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

expires 10d ;

}

# JS和CSS缓存时间设置

location ~ .*\.(js|css)?$ {

expires 1h ;

}

# 日志格式设定

log_format access ' $remote_addr  - $remote_user  [ $time_local ] " $request " '

' $status $body_bytes_sent " $http_referer " '

'" $http_user_agent " $http_x_forwarded_for ' ;

# 定义本虚拟主机的访问日志

access_log /var/log/nginx/access.log access;

location /NginxStatus {

stub_status on ;

access_log on ;

auth_basic "NginxStatus" ;

auth_basic_user_file conf/htpasswd;

#htpasswd文件的内容可以用apache提供的htpasswd工具来产生.

}

}

}

Nginx多台服务器实现负载均衡:

1.Nginx负载均衡服务器

IP:192.168.0.4(Nginx-Server)

2.Web服务器列表

Web1:192.168.0.5(Nginx-Node1/Nginx-Web1) ;Web2:192.168.0.7(Nginx-Node2/Nginx-Web2)

3.实现目的

用户访问Nginx-Server( “http://mongo.demo.com:8888” )时,通过Nginx负载均衡到Web1和Web2服务器

Nginx负载均衡服务器的 nginx.conf 配置注释如下:

events

{

use epoll ;

worker_connections 65535 ;

}

http

{

##upstream的负载均衡,四种调度算法##

upstream webhost {

server 192.168 .0.5 : 6666 ;

server 192.168 .0.7 : 6666 ;

}

upstream webhost {

server 192.168 .0.5 : 6666 weight= 2 ;

server 192.168 .0.7 : 6666 weight= 3 ;

}

upstream webhost {

ip_hash;

server 192.168 .0.5 : 6666 ;

server 192.168 .0.7 : 6666 ;

}

upstream webhost {

server 192.168 .0.5 : 6666 ;

server 192.168 .0.7 : 6666 ;

hash $request_uri;

}

#

#虚拟主机的配置(采用调度算法3:ip_hash)

server

{

listen 80 ;

server_name mongo.demo.com;

#对 "/" 启用反向代理

location / {

proxy_pass http: //webhost;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

proxy_set_header X-Forwarded- For $proxy_add_x_forwarded_for;

#以下是一些反向代理的配置,可选.

proxy_set_header Host $host;

client_max_body_size 10 m; #允许客户端请求的最大单文件字节数

client_body_buffer_size 128 k; #缓冲区代理缓冲用户端请求的最大字节数,

proxy_connect_timeout 90 ; #nginx跟后端服务器连接超时时间(代理连接超时)

proxy_send_timeout 90 ; #后端服务器数据回传时间(代理发送超时)

proxy_read_timeout 90 ; #连接成功后,后端服务器响应时间(代理接收超时)

proxy_buffer_size 4 k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小

proxy_buffers 4 32 k; #proxy_buffers缓冲区,网页平均在32k以下的设置

proxy_busy_buffers_size 64 k; #高负荷下缓冲大小(proxy_buffers*2)

proxy_temp_file_write_size 64 k;

#设定缓存文件夹大小,大于这个值,将从upstream服务器传

}

}

}

负载均衡操作演示如下:

操作对象:192.168.0.4(Nginx-Server)

# 创建文件夹准备存放配置文件

$ mkdir -p /opt/confs

$ vim /opt/confs/nginx.conf


编辑内容如下:

events

{

use epoll;

worker_connections 65535;

}

http

{

upstream webhost {

ip_hash;

server 192.168.0.5:6666 ;

server 192.168.0.7:6666 ;

}

server

{

listen 80;

server_name mongo.demo.com;

location / {

proxy_pass http://webhost;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $host;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 4k;

proxy_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

}

}

}

# 然后保存并退出


启动负载均衡服务器192.168.0.4(Nginx-Server)

docker run -d -p 8888:80 --name nginx-server -v /opt/confs/nginx.conf:/etc/nginx/nginx.conf --restart always nginx

操作对象:192.168.0.5(Nginx-Node1/Nginx-Web1)

# 创建文件夹用于存放web页面

$ mkdir -p /opt/html

$ vim /opt/html/index.html


编辑内容如下:

<div>

<h1>

The host is 192.168.0.5(Docker02) - Node 1!

</h1>

</div>

# 然后保存并退出


启动192.168.0.5(Nginx-Node1/Nginx-Web1)

$

docker run -d -p 6666:80 --name nginx-node1 -v /opt/html:/usr/share/nginx/html --restart always nginx

操作对象:192.168.0.7(Nginx-Node2/Nginx-Web2)

# 创建文件夹用于存放web页面

$ mkdir -p /opt/html

$ vim /opt/html/index.html


编辑内容如下:

<div>

<h1>

The host is 192.168.0.7(Docker03) - Node 2!

</h1>

</div>

# 然后保存并退出


启动192.168.0.7(Nginx-Node2/Nginx-Web2)

$

pwd

)/html:/usr/share/nginx/html --restart always nginx

测试:

域名:mongo.demo.com,这里是用Windows系统主机访问服务器,要在当前主机的hosts中添加解析 “mongo.demo.com 192.168.0.4”,hosts文件所在的路径为 “C:\Windows\System32\drivers\etc”。

这里在Windows主机上通过浏览器访问 “http://mongo.demo.com:8888” 这个站点的时候,Nginx会根据来访的主机的ip_hash值,负载均衡到192.168.0.5(Nginx-Node1/Nginx-Web1)和192.168.0.7(Nginx-Node2/Nginx-Web2)服务器上。

如果其中一个Web服务器无效后,负载均衡服务器会自动将请求转发到正常的Web服务器。

EFbmAbB.png!web

下图是另外做的一组demo的访问效果图,而且容器的端口和IP不同(所有信息都做了相应修改):

1.Nginx-Server:192.168.2.129(Docker01);

2.Nginx-Node1:192.168.2.56(Docker02);

3.Nginx-Node2:192.168.2.77(Docker03);

jqQ7neY.png!web

iY3amiA.png!web

i22YBne.jpg!web

建议收藏!耗时3个月收集的《Python和人工智能》资料教程~

用树莓派构建一台服务器,永久运行网站

f2eEFvj.png!web

faUFJrF.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK