本章主要对Nginx服务器的常用配置文件,包括虚拟主机配置,location配置级语法等。

1. 虚拟主机配置

在前面启动Nignx后,Nginx目录下会多出几个文件夹

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
/usr/local/nginx
			--conf	配置文件
			--html  网页文件
			--logs  日志文件
			--sbin  主要二进制文件

			--client_body_temp
			--fastcgi_temp
			--proxy_temp
			--scgi_temp
			--uwsgi_temp

不过这些temp文件夹都不是重点。

1.1 配置文件

这里讲解一下conf里的配置文件,有很多配置文件,重点看 nginx.conf.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
/usr/local/nginx/conf
		-- fastcgi.conf
		-- fastcgi.conf.default
 		-- fastcgi_params
		-- fastcgi_params.default
		-- koi-utf
 		-- koi-win
 		-- mime.types
 		-- mime.types.default
 		-- nginx.conf  # 重点关心这个
 		-- nginx.conf.default
		-- scgi_params
		-- scgi_params.default
 		-- uwsgi_params
		-- uwsgi_params.default
 		--win-utf

1.2 nginx.conf

看一下默认的nginx.conf

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
[root@localhost conf]# vim nginx.conf
//默认配置如下:

#可以指定用户 不过无所谓
#user  nobody;   

#nginx工作进程,一般设置为和cpu核数一样
worker_processes  1; 

#错误日志存放目录 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#进程pid存放位置
#pid        logs/nginx.pid;


events {
    # 单个CPU最大连接数
    worker_connections  1024;
}

# 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        on;
    
    # 激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布
    # 积极的作用是减少网络报文段的数量
    #tcp_nopush     on;
    
	#连接超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
    
    #开启gzip压缩功能
    #gzip  on;
    
	#基于域名的虚拟主机
    server {
        #监听端口
        listen       80;
        #域名
        server_name  localhost;
        #字符集
	    #charset koi8-r;
         
	    #nginx访问日志 这里的main就是上面配置的那个log_format  main 
        #access_log  logs/host.access.log  main;
        
	    #location 标签
        #这里的/表示匹配根目录下的/目录
        location / {
            #站点根目录,即网站程序存放目录
		   #就是上面的四个文件夹中的html文件夹
            root   html;
            #首页排序 默认找index.html 没有在找index.htm
            index  index.html index.htm;
        }
	    # 错误页面
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #错误页面 错误码为500 502 503 504时 重定向到50x.html
        error_page   500 502 503 504  /50x.html;
	    #location 标签
        #这里的表示匹配根目录下的/50x.html
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

1.3 基本配置

上面的配置文件好像挺长的,其实最重要的就那么几个。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
http{
    keepalive_timeout  65;
    server{
        listen 80; //端口号
        server_name localhost; //域名
        location \ {
            root html; //网站根目录
            index index.html; //网站首页
        }  
        access_log  logs/host.access.log  main; //访问日志
        error page 500 error.html; //错误页面
    }
}

2. location

2.1 简介

nginx.conf大概内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
http{
    keepalive_timeout  65;
    server{
        listen 80; #端口号
        server_name localhost; #域名
        location \ {
            root html; #网站根目录
            index index.html; #网站首页
        }  
        access_log  logs/host.access.log  main; #访问日志
        error page 500 error.html; #错误页面
    }
}

其中server代表虚拟主机,一个虚拟主机可以配置多个location

location表示uri方法定位

基本语法如下:

  • 1.location=pattern{} 静准匹配
  • 2.location pattern{} 一般匹配
  • 3.location~pattern{} 正则匹配

Nginx可以对数据进行压缩,对一些图片、css、js、html等文件进行缓存,从而实现动静分离等待优化功能

动态的就去访问tomcat服务器,静态的就直接访问Nginx服务器

基本语法

1
2
3
location [=|~|~*|^~|@] /uri/ {
    ....
}

〖=〗 表示精确匹配,如果找到,立即停止搜索并立即处理此请求。 〖~ 〗 表示区分大小写匹配 〖~*〗 表示不区分大小写匹配 〖^~ 〗 表示只匹配字符串,不查询正则表达式。

〖@〗 指定一个命名的location,一般只用于内部重定向请求。

2.2 正则表达式

1.语法格式:

1
2
3
location [=|~|~*|^~|@]   /uri/ {
    .....
}

1.依据不同的前缀=^~,~* ”和不带任何前缀(因为[ ] 表示可选,可以不要的)表达不同的含义。 简单的说尽管location 的/uri/ 配置一样,但前缀不一样,表达的是不同的指令含义。 注意:查询字符串不在URI范围内。例如:/films.htm?fid=123 的URI 是/films.htm

2.对这些不同前缀,分下类,就2 大类:

  • 正则location : ~ ~*前缀表示正则location ,~ 区分大小写,~* 不区分大小写。
  • 普通location : =^~ 和   无任何前缀, 都属于普通location 。

详细说明

  • ~  : 区分大小写匹配

  • ~* : 不区分大小写匹配

  • !~ :  区分大小写不匹配

  • !~* : 不区分大小写不匹配

  • ^ : 以什么开头的匹配

  • $ : 以什么结尾的匹配

  • ***** : 代表任意字符

3. 参考

http://www.runoob.com/linux/nginx-install-setup.html