Nginx配置
下载安装:http://nginx.org/en/download.html
下载稳定版
启动 cmd即可
start nginx
tasklist /fi "imagename eq nginx.exe"
修改端口号
localhost:80或者 127.0.0.1打开
重启:.\nginx -s reload
停止: .\nginx -s quit
.\nginx -s stop
nginx -t 判断问题在第几行
nginx.conf配置文件
Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 location(URL匹配特定位置后的设置),每部分包含若干个指令。main部分设置的指令将影响其它所有部分的设置;server部分的指令主要用于指定虚拟主机域名、IP和端口;upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location部分用于匹配网页位置(比如,根目录"/","/images",等等)。他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。
user www www; #默认的用户名
worker_processes 2; #进程的个数
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
nginx作为反向代理服务器 计算公式最大连接数=worker_processes*worker_connections/4
所以这里的worker_connections是8192都没关系,但是不能超过后面的worker_rlimit_nofile
当nginx作为http服务器时,计算公式里面是除以2
worker_rlimit_nofile 10240写在main部分,最大是65535
events {
use epoll; #写在events部分,在linux操作系统下,nginx默认是epoll事件模型,OpenBSD,FreeBSD是kqueue
worker_connections 2048;
}
http服务器,提供一些http服务相关的配置
http {
include mime.types;
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是nginx是否调用sendfile函数输出文件,减少用户空间到内核空间的上下文切换
#对普通应用设置为on,如果进行下载应用磁盘IO重负载应用,可设为off,以平衡磁盘与网络I/O处理速度
#降低系统的负载
sendfile on;
# tcp_nopush on;
#长连接超时时间,单位是秒,这个参数很敏感,涉及浏览器的种类,后端度服务器的超时设置,操作系统的设置,
#长连接请求大量小文件的时候,可以减少重建连接的开销,但假如有大文件上传,65s内没上传完会导致失败
#如果设置时间过长,用户有多,长时间保持连接会占大量资源
keepalive_timeout 65;
#send_timeout
gzip压缩功能设置
gzip on; #开启gzip压缩设置,减少网络传输
#设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是20。建议设置成大于1#k的字节数,小于1k可能会越压越大
gzip_min_length 1k;
#设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
#4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。
gzip_buffers 4 16k;
gzip_http_version 1.0; #早期的版本不支持gzip,为了让他支持
gzip_comp_level 6; #1压缩比最小速度最快。9压缩比最大速度最慢(传输快但是消耗cpu)
#指定压缩类型
gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
#和http头有关系,会在响应头加个 Vary: Accept-Encoding #可以让前端的缓存服务器缓存经过gzip压缩的页面,例如,用Squid缓存经过Nginx压缩的数据
gzip_vary on;
#gzip_proxied any : #Nginx作为反向代理的时候启用,决定开启或者关闭后端服务器返回的结果是否压缩,匹配的前提是后端服务器必须要返#回包#含"Via"的 header头
http_proxy 设置 这是作为反向代理的功能(包括缓存功能)
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 75; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 75;
proxy_read_timeout 75; #连接成功后,与后端服务器两个成功的响应操作之间超时时间(代理接收超时)
#设置代理服务器(nginx)从后端realserver读取并保存用户头信息的缓冲区大小,默认与proxy_buffers大小相同,
#其实可以将这个指令值设的小一点
proxy_buffer_size 4k;
#poxy_buffers缓冲区,nginx针对单个连接缓存来自后端realserver的响应,网页平均在32k以下的话,这样设置
proxy_buffers 4 32k;
#高负荷下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 64k;
#当 proxy_buffers放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中, #这个值用来设置最大临时文件大小,
#默认1024M,
#它与 proxy_cache 没有关系。大于这个值,将从upstream服务器传回。设置为0禁用。
proxy_temp_file_write_size 64k;
proxy_temp_path /usr/local/nginx/proxy_temp 1 2;
设定负载均衡后台服务器列表
upstream backend {
#ip_hash;
server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ;
server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ;
}
很重要的虚拟主机配置
server {
listen 80; #小于1024的要以root启动,可以为listen *.80、listen 127.0.0.1:80
server_name itoatest.example.com; #服务器名字可以是localhost。www.example.com、或者正则
root /apps/oaapp;
charset utf-8;
access_log logs/host.access.log main;
#对 / 所有做负载均衡+反向代理
location / {
root /apps/oaapp; #定义服务器的默认网站根目录
index index.jsp index.html index.htm;
#请求转向backend定义的服务器列表,即反向代理,对应upstream负载均衡器
proxy_pass http://backend;
proxy_redirect off;
# 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
#静态文件,nginx自己处理,不去backend请求tomcat
location ~* /download/ {
root /apps/oa/fs;
}
location ~ .*/.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
root /apps/oaapp;
expires 7d;
}
location /nginx_status {
#允许和禁用某个ip或某个时间段访问
stub_status on;
access_log off;
# auth_basic "NginxStatus";
# auth_basic_user_file /usr/local/nginx-1.6/htpasswd;
allow 192.168.10.0/24;
deny all;
#http-devel工具htpasswd来为访问的路径设置登录密码
#htpasswd -c htpasswd admin
#New passwd:
#Re-types new password:
#Adding password for user admin
#htpasswd htpasswd admin //修改admin密码
#htpasswd htpasswd sean //多添加一个认证用户
#这样就默认使用了CRYRT加密的密码文件,打开上面的注释,重启nginx
}
location ~ ^/(WEB-INF)/ {
deny all;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
其它虚拟主机,server 指令开始
}
Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件,在location,server 或 http段中加入autoindex on;,另外两个参数最好也加上去:
autoindex_exact_size off; 默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间
location /images {
root /var/www/nginx-default/images;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}