Nginx动静分离,rewrite规则,HTTPS服务
Nginx动静分离
通过中间件将动态请求和静态请求分离,对于服务端而言,减少不必要的请求消耗,减少请求延时
配置示例:
打开Tomcat的8080端口作为动态请求,Nginx中存储静态资源文件
# 注意路径不能使用下划线,tomcat无法识别
upstream java-api{
server 127.0.0.1:8080;
}
server {
listen 80;
server_name localhost;
# 对于指定路径的请求跳转到tomcat服务器
location ~ \.jsp$ {
proxy_pass http://java-api;
index index.html index.htm;
}
}
rewrite规则
Nginxrewire规则用于url重写以及重定向,主要是使用正则表达式
使用场景:
- URL访问跳转,支持开发设计(页面跳转,兼容性支持,展示效果等)
- SEO优化
- 维护(后台维护,流量转发)
- 安全(实现伪静态)
配置语法
# 配置在server,location,if中
# regex:需要改写的内容的正则表达式
# replacement: 要替换成哪一个url或者路径等
# flag:标识
rewrite regex replacement [flag];
标识flag的值
last
:停止rewrite检测break
:停止rewrite检测redirect
:返回302临时重定向,地址栏会显示跳转后的地址permanent
:返回301永久重定向,除非客户端清除缓存,否则不需要在经过服务器就可以直接重定向,地址栏会显示跳转后的地址
last和break区别:
break在匹配到rewrite规则后,不会向下去查看是否有location匹配,而是直接到root目录下查看相应的路径下是否存在文件链接
last在配置到rewrite规则后,会重新对服务端发起一次请求,此时请求路径变为rewrite后的路径地址,所以能够匹配到下一个lication
示例:
server {
listen 80 default_server;
server_name rewrite-test.com;
root html;
location ~ ^/break {
# 无法访问到下一个location,所以访问会报404错误
rewrite ^/break /test/ break;
}
location ~ ^/last {
# 可以访问到
rewrite ^/last /test/ last;
}
location /test/ {
default_type application/json;
return 200 '{"status":success"}';
}
}
rewrite规则优先级:最先匹配server块的rewrite,再匹配lication
HTTPS服务
HTTPS对传输内容进行了加密,默认使用443端口
配置语法
# 默认off,配置在http,server
ssl on|off
# ssl的证书文件
ssl_certificate file;
# ssl证书的密码文件
ssl_certificate_key file;
HTTPS服务优化
- 激活keepalive长连接,一次连接处理更多请求,减少握手次数
- 设置ssl session缓存
ssl_session_timeout 5m;