高性能Web容器之Nginx

高性能Web容器之Nginx

Nginx与Apache、Tomcat一样都是HTTP服务器,它们的本质仍然是一个应用程序,放在服务端,通过绑定ip:port监听一个端口去接受客户端的HTTP请求。按照动/静态服务器划分,Nginx和Apache属于静态服务器,Tomcat与jetty属于动态服务器。

Nginx配置详

nginx.config配置文件主要有main、event、http等模块构成,我们详细讲述一下关于http的配置

虚拟主机的配置

虚拟主机的配置有三种:基于ip的虚拟主机、基于port的虚拟主机和基于域名的虚拟主机。一般情况下基于port和基于域名的虚拟主机比较常用。

  1. 基于port的虚拟主机配置

    server	{
    	listen		80;
    	server_name		location;
    	location	/	{
    		root		html;
    		index		index.html;
    	}
    }
    
  2. 基于域名的虚拟主机

    server{
    listen	80;
    server_name		mes.action-prowave.com;
    location	/	{
        root html;
        index	mes.html
    } 
    

}
```

location配置语法

location [ = | ^~ | ~*] /uri/ {……}

location = /uri(精准匹配,优先级最高)
location ^~ /uri(普通匹配,优先级其次)
location ~ /uri(正则匹配)

	location	=	/
	location	= /index
	location	^~/article
	location	^~/article/file
	location	~	\.(PNG | GIF)$

实际使用

location	= /	{
	//主页配置
}

location	/	{
	//通用配置
}

location	/	{
	//静态文件配置
}

反向代理

server{
listen	80;
server_name	localhost;
location /	{
	proxy_pass		http://192.168.0.45:8080;
	proxy_set_header 	Host $host;	//host变量
	proxy_set_header	X-Real -IP	$remote_addr;//远程地址
	proxy_set_header	X-Forwarded-For		$proxy_add_x_forwarded_for;//所有代理服务器的地址
	
}
}

负载均衡

upsteam tomcat{
server 192.168.0.1	max-fails=2	fail_timeout 60s;(最大失败次数,失败后60s内不再发送请求);
server 192.168.0.2;
}
server{
listen	80;
server_name	localhost;
location / {
	proxy_pass	http://tomcat;
	proxy_next_upsteam error timeout http_500;(服务器出现错误的时候向其他服务器发送请求)
	proxy_connect_timeout 60s;(nginx与上游服务器的连接超时时间,默认60s)
	proxy_send_timeout	60s;
	proxy_read_timeout	60s;
}

}

动静分离

```
location	~	.*\.(js|css|png|svg|ico|jpg)${
root static-resource;

}
```

文件压缩

http	{
gzip	on;
gzip_min_length		5k;	//压缩的最小长度,当超过该长度的时候需要进行压缩
gzip_comp_level		3;	//压缩等级,级别越高,文件压缩的越小,会带来CPU资源的占用
gzip_types	application/javascript	image/jpeg	//哪些类型的文件需要压缩
gzip_buffers	4  32K; //以32k的4倍去申请内存
gzip_vary	on;	//根据http头判断是否进行压缩
}

防盗链

location	~	.*\.(js|css|png|svg|ico|jpg)${
valid_referers none blocked 192.168.0.4 www.action-prowave.com;
if ($invalid_referer) {
return 404;
}
root static-resource;
}

跨域访问

location / {
add_header	Access-Controller-Allow-Origin	*;
add_header	Access-Controller-Allow-Methods 'GET,POST,OPTIONS';
add_header	Access_Controller-Allow-Header 'Content-type';
}

猜你喜欢

转载自blog.csdn.net/baidu_41934937/article/details/109294985