一、总结
Nginx由少量的核心框架代码和许多模块组成,每个模块都有其独特的功能。因此,了解了每个模块的实现功能及配置方法,我们就能知道Nginx可以为我们做什么了。
在上一篇文章中介绍了反向代理服务器的基本配置,至此Nginx初步使用的配置已经基本都涉及到了。在实际应用中,很多配置使用默认项即可,有的配置基本不会使用到,还有的配置用于特定模块下,也是十分常用的,比如gzip等。因此做了一个思维导图,便于查找各种配置的含义。
https://www.processon.com/view/link/5dce155ee4b03d5b5a4272d1
至于其他模块,可以到Nginx的Wiki网站(http://wiki.nginx.org/Modules)进行查阅。
二、配置文件实际应用
user www www;#Nginx worker 进程运行的用户及用户组
worker_processes 4; # Nginx worker进程个数
error_log /opt/nginx/logs/nginx_error.log crit;#error日志的设置
pid /opt/nginx/logs/nginx.pid;#pid文件路径
worker_rlimit_nofile 655350;#指定Nginx worker进程可以打开的最大句柄描述符个数
events {
use epoll;#选择事件模型
worker_connections 655350;#每个worker的最大连接数
}
http {
include mime.types;#
default_type application/octet-stream;#默认MIME type
charset utf-8;
server_tokens off;#返回错误页面时是否在server中注明Nginx版本
server_names_hash_bucket_size 128;#以hash存储server_name列表时的桶大小
client_header_buffer_size 512k;#存储HTTP头部的内存buffer大小
large_client_header_buffers 4 512k;#存储超大HTTP头部的内存buffer大小
client_max_body_size 8m;#HTTP请求包体的最大值
sendfile on;#sendfile系统调用
tcp_nopush on;#开启nginx在FreeBSD上使用TCP_NOPUSH套接字选项
keepalive_timeout 60;#keepalive超时时间
tcp_nodelay on;#开启nginx使用TCP_NODELAY选项的功能
proxy_connect_timeout 5;#与代理服务器建立连接的超时时间
proxy_read_timeout 60;#从代理服务器读取响应的超时时间
proxy_send_timeout 5;#向代理服务器发送请求的超时时间
proxy_buffer_size 32k;#设置用于读取响应第一部分的buffer大小
proxy_buffers 4 64k;#设置用于读取响应的buffer数量和大小
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;#打开响应压缩
gzip_min_length 1k;#设置用于压缩响应的数量和大小
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript application/javascript text/css application/xml image/jpeg image/gif image/png;#压缩类型
gzip_vary on;
proxy_temp_path /opt/nginx/cache_temp;
proxy_cache_path /opt/nginx/cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
include /opt/nginx/conf/vhosts/*_vhost.conf;#嵌入其他配置文件
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 logs/access.log access;
}
upstream example_server {
server 192.168.1.1:80;
server compass.abc.com;
}
server {
listen 443 ssl;
server_name abc.com;
root /opt/web_html/abc.com;
index index.html;
ssl_certificate /opt/soft/abc.com.crt;
ssl_certificate_key /opt/soft/abc.com.key;
ssl_prefer_server_ciphers on;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
access_log logs/abc.com_access.log;
error_log logs/abc.com_error.log;
error_page 404 /view/404.html;
location / {
root /opt/soft/web_html/abc.com/dist;
index index.html use.html;
try_files $uri $uri/ /index.html /user.html;
}
location ^~ /api/
{
proxy_set_header Host api.abc.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://example_server;
}
location ^~ /zuul/api/
{
proxy_set_header Host compass-api.abc.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://example_server;
}
}
网友评论