什么是动静分离

比如我有应用服务器,也有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