nginx主要配置
用户流量经过nginx端的分流到多个tomcat实例上,下面介绍一下nginx常用的配置文件nginx.conf
//运行worker进程的用户
user xxx;
//启动的进程数量,通常设置为和cpu核数一致
worker_processes 8;
//worker进程的最大打开文件数限制,需要设置的高,否则文件描述符会不够用。
worker_rlimit_nofile 102400;
//错误日志
error_log /var/logs/error.log;
//pid文件
pid /var/logs/nginx.pid;
//events模块包含nginx中关于连接的部分
events {
//一个worker进程可以同时打开的最大连接数目,这个数目需要和worker_rlimit_nofile协调。socket占用一个文件描述符
worker_connections 1024;
//采用epoll方式处理高并发连接,不写的话会默认选择最好的方式。
user epoll;
}
http {
//include 作用就是复制文件内容到所在位置
//文件扩展名与文件类型映射表,nginx根据映射关系,设置http请求响应头的content-type值,在映射表中找不到的时候使用default_type
include mime.types;
default_type application/octet-stream;
//log格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format welove '$remote_addr [$time_local] $host $request $status $body_bytes_sent request_time: $request_time upstream_response_time: $upstream_response_time $http_accept_language';
#access_log logs/access.log main;
access_log off;
//linux sendfile api可以减少内核和用户层面的拷贝次数,加快效率。
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_types text/plain application/x-javascript text/css application/xml application/json;
//server_tag字段用于设置response里面的Server字段,可以用来隐藏服务器的一些信息
server_tag UGuess;
deny 11.11.11.11;
#fastcgi_intercept_errors on;
upstream welove520 {
server 127.0.0.1:8080 weight=10;
server 192.168.1.1:8080 weight=10;
}
//定义了虚拟主机
server {
//监听的端口
listen 80;
//监听的域名
//nginx基于域名和IP来混合进行定位,当不匹配的时候或者只有一个server的时候默认采用第一个server
//这里用localhost是不对的(对于我们服务来说),但是由于是默认的server所以没有问题。
//http://tengine.taobao.org/nginx_docs/cn/docs/http/request_processing.html
server_name localhost;
access_log off;
//location用于匹配URI
location / {
proxy_pass http://welove520; //请求转发给welove520指定的服务器列表
//设置一些header,后端tomcat工程可以获取这些值
proxy_set_header Host $host;//
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
//限制客户端上传数据的大小,如果需要上传大文件一定要注意用到这个参数,否则数据会被丢弃
client_max_body_size 15m;
proxy_connect_timeout 150;
proxy_send_timeout 150;
proxy_read_timeout 150;
proxy_next_upstream error timeout invalid_header http_500;
proxy_buffer_size 32k;
proxy_buffers 32 64k;
proxy_busy_buffers_size 128k;
}
}
}
user xxx;
//启动的进程数量,通常设置为和cpu核数一致
worker_processes 8;
//worker进程的最大打开文件数限制,需要设置的高,否则文件描述符会不够用。
worker_rlimit_nofile 102400;
//错误日志
error_log /var/logs/error.log;
//pid文件
pid /var/logs/nginx.pid;
//events模块包含nginx中关于连接的部分
events {
//一个worker进程可以同时打开的最大连接数目,这个数目需要和worker_rlimit_nofile协调。socket占用一个文件描述符
worker_connections 1024;
//采用epoll方式处理高并发连接,不写的话会默认选择最好的方式。
user epoll;
}
http {
//include 作用就是复制文件内容到所在位置
//文件扩展名与文件类型映射表,nginx根据映射关系,设置http请求响应头的content-type值,在映射表中找不到的时候使用default_type
include mime.types;
default_type application/octet-stream;
//log格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format welove '$remote_addr [$time_local] $host $request $status $body_bytes_sent request_time: $request_time upstream_response_time: $upstream_response_time $http_accept_language';
#access_log logs/access.log main;
access_log off;
//linux sendfile api可以减少内核和用户层面的拷贝次数,加快效率。
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_types text/plain application/x-javascript text/css application/xml application/json;
//server_tag字段用于设置response里面的Server字段,可以用来隐藏服务器的一些信息
server_tag UGuess;
deny 11.11.11.11;
#fastcgi_intercept_errors on;
upstream welove520 {
server 127.0.0.1:8080 weight=10;
server 192.168.1.1:8080 weight=10;
}
//定义了虚拟主机
server {
//监听的端口
listen 80;
//监听的域名
//nginx基于域名和IP来混合进行定位,当不匹配的时候或者只有一个server的时候默认采用第一个server
//这里用localhost是不对的(对于我们服务来说),但是由于是默认的server所以没有问题。
//http://tengine.taobao.org/nginx_docs/cn/docs/http/request_processing.html
server_name localhost;
access_log off;
//location用于匹配URI
location / {
proxy_pass http://welove520; //请求转发给welove520指定的服务器列表
//设置一些header,后端tomcat工程可以获取这些值
proxy_set_header Host $host;//
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
//限制客户端上传数据的大小,如果需要上传大文件一定要注意用到这个参数,否则数据会被丢弃
client_max_body_size 15m;
proxy_connect_timeout 150;
proxy_send_timeout 150;
proxy_read_timeout 150;
proxy_next_upstream error timeout invalid_header http_500;
proxy_buffer_size 32k;
proxy_buffers 32 64k;
proxy_busy_buffers_size 128k;
}
}
}
在nginx中将流量通过upstream模块导到后端tomcat服务器上,然后在服务器上处理用户请求并返回。
参考资料:http://tengine.taobao.org/nginx_docs/cn/docs/http/request_processing.html