Skip to content

配置

在nginx/conf中有一个nginx.conf的配置文件

最小配置

worker_processes 1; 默认为1,表示开启一个业务进程,一般填写服务器物理核心数,因为填多了也没啥用反而会造成负担

events > worker_connections 1024; 每一个worker进程可以创建多少个连接

http > include mime.types; 引入mime配置文件,这个文件的作用就是告诉游览器请求的内容该以什么形式进行输出,如:访问一个图片文件返回显示图片不是由后缀决定的,而是由mime决定的,里面放着后缀名以及对应的返回方式

http > default_type application/octet-stream; 表示没有在mime中匹配到后缀名,所以就让客户端进行下载

http > sendfile on; 数据零拷贝

http > server:

nginx
# 虚拟主机
server {

	# 监听端口
    listen       80;

	# 当前的主机名(域名、主机名)
    server_name  localhost;
	
	# 主机名后面跟的地址
    location / {
    	# 从哪个目录下去寻找(路径)
        root   html;
        # 默认页
        index  index.html index.htm;
    }
	
	# 发生错误有如下的错误码会转向到某个地址
	# 如:发生500错误,跳转到/50x.html
	error_page   500 502 503 504  /50x.html;
	# 从html目录中去寻找50x.html的文件
    location = /50x.html {
        root   html;
    }
}

解释

一个server代表一个主机,可以有多个主机

可以在同一个端口中设置多个虚拟主机,但是主机名不能一样,相同的端口号和相同的主机名是冲突的。如:a.cn:80 指向的是a页面,b.a.cn:80 指向的是b页面两个用的都是80端口

一个server可以写多个server_name,方式为:server_name 域名1 域名2; 使用空格隔开

匹配

在多个server中的server_name是由先后顺序的,从上到下先匹配到那个就使用那个,不会再往下面继续匹配

通配符匹配

配置域名的时候支持通配符(*)的方式进行配置域名,如:*.a.cn

通配符结束匹配

跟上面的差不多,只不过这次通配的是顶级域,如:www.a.*

也可以使用正则表达式进行匹配

动静分离

适用于中小型网站

场景:用户访问服务器只是为了获取一些静态资源,但是nginx会把请求转发到tomcat中,这样就会造成tomcat去返回大量的静态资源造成没必要的资源浪费,所以要让nginx去分担一些没必要的压力

配置

nginx
server {
	listen 80;
	server_name localhost;
	# tomcat的配置
	location / {
		proxy_pass http://localhost:8080;
	}
	
	# 静态资源的配置
	location /css {
		root html;
	}
	
	location /image {
		root html;
	}
	
	location /js {
		root html;
	}
}

以上就是最简单对静态资源的分离

/css/的优先级要高

使用正则表达式

在上面的方式比较臃肿,有多个文件夹就要写多个location,在此可以使用正则表达式进行匹配

在Nginx的配置文件中,正则表达式通常以~~*开头。这些前缀用于指示Nginx使用正则表达式匹配URI。

  • ~:表示区分大小写的正则表达式匹配。
  • ~*:表示不区分大小写的正则表达式匹配。
nginx
server {
	listen 80;
	server_name localhost;
	# tomcat的配置
	location / {
		proxy_pass http://localhost:8080;
	}
	
	# 静态资源的配置(正则)
	location ~*/(css|js|image)$ {
		root html;
	}
}

以上就是使用正则表达式进行怕匹配