下载安装: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;
}