nginx是用的最多的web服务器

java和python可以写nginx服务,为什么还需要nginx是因为nginx是纯粹的做http实现的服务,并没有业务逻辑,做http代理

1.需要安装nginx

nginx.org

主要涉及nginx的代理和缓存功能

2.配置nginx基础代理

nginx目录下面有一个conf/nginx.cpnf // nginx的配置主文件

通过include servers/*.conf可以在新建站点的时候,可以单独去建一个配置文件

include是常用的命令帮助导入一些配置

server {   // 启动一个服务
	listen 80;    // 监听80端口
	server_name test.com;    // 在浏览器里面访问的hostname
	location / {
		proxy_pass http://127.0.0.1:8888;   // 代理到什么地方
		proxy_set_header Host $host;   // host经过代理之后会被修改
	}
}
server {   
	listen 80;    
	server_name a.test.com;   
	location / {
		proxy_pass http://127.0.0.1:8888;  
		proxy_set_header Host $host;  
	}
}

$host是变量

https的时候是加密的,所以不能修改

host就去区分我具体访问的是那个服务,中间可能被层层修改

这样一台物理机器可能跑几个服务

http是明文传输,中间都是可以被修改的

3.nginx配置代理和代理缓存的用处

如果都放在一个文件夹里面,随着代理的服务越来越多,查找的速度可能变慢

proxy_cache_path cache levels=1:2 keys_zone=my_cache:10m   // 是否创建二级文件夹

设置keys_zone=my_cache:10m,是因为对应的关系要存在内存里面,设置内存的大小,下面的那个设置放在这个内存里面,比如

server {
	listen 80;
	server_name test.com;
	location / {
		proxy_cache my_cache;
		proxy_pass http://127.0.0.1:8888;
		proxy_set_header Host $host
	}
}

响应头里面加上Cache-Control: max-age=20就可以打开响应

在代理缓存设置之后,如果用户使用过这个代理缓存,即使换一个浏览器,也会使用这个代理缓存,更加高效

代理缓存的缓存设置Cache-Control: max-age=20, s-maxage=20, private

代理缓存会使用s-maxage,浏览器缓存只会使用max-age

private的作用是只有浏览器才能缓存我这部分的数据

Cache-Control: no-store就是所有地方都不缓存

'Cache-Control':'s-maxage=200',
'Vary':'X-Test-Cache'

只有设置的http头相同的情况下,头里面包括X-Test-Cache且其值相同的情况下,才会使用缓存

使用场景:PC和移动端使用的数据不同,让他们使用不同的缓存

4.HTTPS

http明文传输,重要信息不要使用http

公钥和私钥

私钥只会放在服务器上,不会放到互联网上传输

https握手过程

5.使用Nginx部署HTTPS服务

需要本地生成密钥,命令去网上查

// 访问http时自动转成https
server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name test.com
	return 302 https://$server_name$request_uri;
}
server {
	listen 80;
	server_name test.com;
	
	ssl on;
	ssl_certificate_key ../certs/localhost-privkey.pem
	ssl-certificate ../certs/localhost-cert.pem
	
	location / {
		proxy_cache my_cache;
		proxy_pass http://127.0.0.1:8888;
		proxy_set_header Host $host
	}
}
6.HTTP2的优势和Nginx配置HTTP2的简单使用

http2的优势

  • 信道复用
  • 分帧传输
  • Server Push // 服务端主动向客户端发送信息

nginx里面开启http2,https才能开启http2

server {
	listen 443 http2; 
	server_name test.com;
	http2_push_preload on;
	
	ssl on;
	ssl_certificate_key ../certs/localhost-privkey.pem
	ssl-certificate ../certs/localhost-cert.pem
	
	location / {
		proxy_cache my_cache;
		proxy_pass http://127.0.0.1:8888;
		proxy_set_header Host $host
	}
}

curl -v url (返回端口连接信息,http请求头部信息,网页html信息)

nginx使用http2还可以自动兼容http1.1

原文地址:http://www.cnblogs.com/oaoa/p/16851920.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性