1. Nginx代理配置

1.1. 主要的配置参考

...

server {
listen 80;
#ipv6配置
listen [::]:80;
#根据实际地址配置
server_name www.mingsoft.net;

#mcms所在的目录 根据实际部署mcms所在目录配置
root /data/mcms;

#启用ssl,去掉#注释
#listen 443 ssl http2;
#set $flag 0;
#if ($server_port !~ 443){
# set $flag "${flag}1";
#}
#if ($request_method !~ ^(POST)$) {
# set $flag "${flag}1";
#}
#if ($flag = "011"){
# rewrite ^(/.*)$ https://$host$1 permanent;
#}

#ssl_certificate mcms.pem;
#ssl_certificate_key mcms.key;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#ssl_prefer_server_ciphers on;
#ssl_session_cache shared:SSL:10m;
#ssl_session_timeout 10m;

location / {
    index default.html default.htm index.html index.htm;
    rewrite /  /msIndex.do;
}

location ~ .*\.(do)$ {
    # 根据实际系统启动等地址配置
    proxy_pass http://127.0.0.1:8080;
    # 注意:如果使用了堡垒机端口映射,例如:映射端口8989 -> nginx端口80 -> mcms端口8080,需要将mcms端口8080修改成8989,如果遇到访问地址不正确,可以将$host:$server_port直接填写外网ip或域名与端端口(必须与实际端口一致)
    #proxy_set_header Host $host:$server_port;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    add_header Access-Control-Allow-Origin $http_origin;
    add_header Access-Control-Allow-Credentials true;
}

#代理jar包里面的js,如果遇到其他jar包按规则配置(也可以直接将资源文件复制到static目录-推荐)
location ~ /(static/mdiy|static/mweixin|static/datascope) {
    # 根据实际系统启动等地址配置
    proxy_pass http://127.0.0.1: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;
    add_header Access-Control-Allow-Origin $http_origin;
    add_header Access-Control-Allow-Credentials true;
} 

#一台服务器实现动静分离效果
location ~ .*\.(html)$ {
    #具体根据实际项目情况配置路径,开启了断链接必须 后面加 html路径 如:root /data/mcms/html
    root /data/mcms;

    expires 24h;
}

#静态资源
location ~ /(static/plugins|html|upload){
    #缓存(天)
    expires 12d;
}

location ~ .*\.(gif|jpg|jpeg|png|css|js|html|htm|eot|otf|ttf|woff|woff2|svg|less)$ {
    expires 24h;
}

#屏蔽
location ^*/WEB-INF/ {
    deny all;
}
access_log /var/log/nginx/mcms.log;
}

...

[!tip]根据实际的域名进行配置调整(mcms所在的目录位置、服务器mcms文件夹结构
、nginx非80端口),
注意:如果配置不正确会导致例如百度编辑器上传错误、404等问题

1.2. 多台服务器动静分离部署配置(静态页面服务器)

如果是将静态文件同步到独立的服务器访问,只需要部署nginx不需要部署mcms的配置

...

server {
listen 80;
#ipv6端口80
listen [::]:80;
#根据实际地址配置
server_name www.mingsoft.net;

#如果只是代理生成好的静态文件,同时需要将template、upload、static同步到服务器
root /data/mcms/html/站点目录;

location / {
    index  default.html default.htm index.html index.htm;
}

#静态资源
location ~ /(static/plugins|html|upload|template){
    #缓存(天)
    expires 12d;
}
location ~ .*\.(gif|jpg|jpeg|png|html|htm|css|js)$ {
    expires 24h;
}
#屏蔽
location ^*/WEB-INF/ {
    deny all;
}
access_log /var/log/nginx/mcms.log;
}

...

[!tip]采用这种方式部署时,建议模版里面的路径都采用相对的路径,不要使用 {ms:global.url/}{ms:global.host/} 标签,这样生成的html就不会存在域名的信息,方便静态文件的部署。如果使用了站群情况下需要对每个站点域名配置对应的 server

1.3. 脚手架版本配置

实际脚手架部署会部署两个地址,例如:http://admin.域名 访问脚手架管理后台,http://域名 访问MCms静态化后的页面。 如果脚手架文件与项目使用同一个域名下访问时候,需要将脚手架的访问路径增加一层目录,如:http://域名/admin/访问脚手架页面,http://域名 访问MCms静态化后的页面。 如果MCms设置了 server.servlet.context-path,需要将脚手架的 VITE_PROXY 值与 server.servlet.context-path 一致

1.4. 常见问题

1.4.1. 主机头注入攻击

参考博文

主机头注入攻击

1.4.2. 不安全、不正确、缺少SameSite的Cookie

参考博文

不安全、不正确、缺少SameSite的Cookie

1.4.3. trace、track http不安全、不安全的option http

参考博文

trace、track http不安全

1.4.4. 配置Content-Security-Policy

参考博文

配置Content-Security-Policy

1.4.5. 配置x-content-type-options

参考博文

配置x-content-type-options

1.4.6. 配置Referral Policy Security

参考博文

配置Referral Policy Security

1.4.7. 跨站脚本攻击

参考博文

配置x-frame-options

1.4.8. 跨站点请求伪造

参考博文

跨站点请求伪造

Copyright © mingsoft.net 2021 all right reserved,powered by Gitbook该文件修订时间: 2024-08-29 13:42:37

results matching ""

    No results matching ""

    results matching ""

      No results matching ""