什么是动静分离
比如我有应用服务器,也有web服务器,一般来说,web服务器能够快速处理图片,文字,css,json格式,但是对于,复杂的运算,比如求出上年每月销售环比,类似这种数据是动态数据。应用服务器处理图片,文字类似,其实不擅长.
正常配置
server {
listen 80;
location / {
proxy_pass http://192.168.10.10/; # 应用服务器的地址
,tomcat,weblogic,webshpere,glashfish,springboot,jetty,
#以上图片处理有问题
# 图片应用服务器给的,性能不优化
}
}
在应用服务器当中,肯定有一个网址
http://192.168.10.10/images/20240807/ #每个最新的图片
我修改配置如下
server {
listen 80;
server_name example.com;
# 处理 JPEG 图片
location ~* \.(jpg|jpeg)$ {
root /var/www/static/images;
expires 30d;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
}
# 处理 PNG 图片
location ~* \.(png)$ {
root /var/www/static/images;
expires 30d;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
}
# 处理视频文件
location ~* \.(mp4|webm|ogg)$ {
root /var/www/static/videos;
expires 30d;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
}
# 处理 CSS 和 JavaScript 文件
location ~* \.(css|js)$ {
root /var/www/static/assets;
expires 7d;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
}
# 处理其他静态资源(例如字体、文档等)
location ~* \.(woff|woff2|ttf|otf|eot|pdf|docx)$ {
root /var/www/static/assets;
expires 30d;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
}
# 所有其他请求转发到 Tomcat
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
动态转静态
server {
listen 80;
server_name example.com;
# 设置静态文件的根目录
root /var/www/html/static;
# 处理静态页面请求
location / {
# 优先处理静态文件请求
rewrite ^/channel/([^/]+)/articleid/([0-9]+)\.html$ /getnews.do?channel=$1&id=$2 break;
# 如果静态文件不存在,则转发到后台服务
try_files $uri $uri/ @backend;
}
# 动态服务处理
location @backend {
proxy_pass http://localhost:8080; # 后台服务地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 处理静态资源(如图片、CSS、JS)
location /static/ {
alias /var/www/html/static/;
expires 30d;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
部署或购买CDN网络
生成证书
安装根证书
mkcert -install
安装域名证书
mkcert your_domain_name
注意,your_domain_name,必须和你的ssl网站的server_name一定要一致。
网上的申请的权威证书,可能会匹配*.your_domain_name.
保存证书
mkdir -p /etc/nginx/ssl
cp your_domain_name* /etc/nginx/ssl
然后做如下配置
server {
listen 80;
server_name 192.168.10.139;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
root /usr/share/nginx/html;
ssl_certificate "/etc/nginx/ssl/192.168.10.139.pem";
ssl_certificate_key "/etc/nginx/ssl/192.168.10.139-key.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
免费的证书
Let’s Encript,这个网站的证书申请3个月就过期,但是权威的,不退弹出,有风险,不安全的字样。一年可以省掉6000。
需要每个季度1号,crontab 续证书, 网上代码有。
ssl配置及强行跳转
如何强制跳转80到443
作者:严锋 创建时间:2024-08-08 09:09
最后编辑:严锋 更新时间:2025-05-09 15:48
最后编辑:严锋 更新时间:2025-05-09 15:48