add 20251112 report

This commit is contained in:
Jiao77
2025-11-10 01:50:34 +08:00
parent 6592c45649
commit 4c9dc87d1c
8 changed files with 3093 additions and 22 deletions

323
jiao77.cn.conf Normal file
View File

@@ -0,0 +1,323 @@
############################################################
# Apache 子域名反向代理配置jiao77.cn
#
# 说明:
# - 避免子路径带来的静态资源/重写/WS 问题,每个服务独立子域名
# - 统一在 443 终止 TLSApache 反代到本地端口服务
# - 主站 jiao77.cn 使用 Docker 容器部署(端口 3001
# - API 后端服务使用 Docker 容器部署(端口 3000
#
# 前置:
# - DNS 为以下子域名添加 A/AAAA 记录 -> 服务器 IP
# - 证书需覆盖所有子域(通配符 *.jiao77.cn 或 SAN 多域名证书)
# - 启用模块ssl headers proxy proxy_http proxy_wstunnel rewrite deflate cache cache_disk expires
#
# 部署:
# - 放置到 /etc/apache2/sites-available/jiao77-subdomains.conf
# - sudo a2enmod ssl headers proxy proxy_http proxy_wstunnel rewrite deflate cache cache_disk expires
# - sudo a2ensite jiao77-subdomains && sudo systemctl reload apache2
############################################################
# ============ 主站(前端 Docker 容器) ============
<VirtualHost *:80>
ServerName jiao77.cn
ServerAlias www.jiao77.cn
RewriteEngine On
RewriteRule ^/(.*)$ https://jiao77.cn/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName jiao77.cn
ServerAlias www.jiao77.cn
SSLEngine on
SSLCertificateFile /etc/ssl/jiao77/cert.pem
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
# 安全头配置
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "no-referrer-when-downgrade"
# 代理配置
ProxyPreserveHost On
ProxyRequests Off
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
# 缓存策略VirtualHost 级别)
# 注意:一些缓存指令(如 CacheIgnoreHeaders不允许放在 <LocationMatch> 中
# 因此在虚拟主机级别声明,以便对下方的缓存生效
CacheIgnoreHeaders Set-Cookie
# ============ API 后端代理 ============
# 暂时注释掉 API 代理,如果需要可以取消注释
# 健康检查(不记录日志)
# <Location /health>
# ProxyPass http://127.0.0.1:3000/health
# ProxyPassReverse http://127.0.0.1:3000/health
# SetEnv no-log 1
# </Location>
# API 接口代理
# 关键:使用 <Location> 并带尾部斜杠,确保路径正确传递
# <Location /api/>
# ProxyPass http://127.0.0.1:3000/api/
# ProxyPassReverse http://127.0.0.1:3000/api/
#
# # API 缓存配置10分钟
# CacheEnable disk
# CacheHeader on
# CacheDefaultExpire 600
# CacheMaxExpire 600
# </Location>
# ============ 静态资源缓存 ============
# 由于现在直接使用静态文件服务,这个 LocationMatch 可以移除
# 静态资源缓存已在下面的 Directory 配置中处理
# ============ 前端应用代理(默认) ============
# 直接提供静态文件服务,不使用 Docker 容器
DocumentRoot /var/www/jiao77.cn
DirectoryIndex index.html
# 静态文件处理
<Directory /var/www/jiao77.cn>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 对静态资源启用缓存
<LocationMatch "\.(js|css|png|jpg|jpeg|gif|ico|woff|woff2|svg|webp)$">
ExpiresActive On
ExpiresDefault "access plus 30 days"
Header set Cache-Control "public, max-age=2592000, immutable"
</LocationMatch>
# Gzip 压缩配置
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE application/javascript application/json
AddOutputFilterByType DEFLATE application/xml application/rss+xml
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/jiao77-main-error.log
CustomLog ${APACHE_LOG_DIR}/jiao77-main-access.log combined
</VirtualHost>
</IfModule>
# 公共代理选项
<IfModule mod_ssl.c>
SSLProxyEngine on
</IfModule>
# ============ Gitea ============
<VirtualHost *:80>
ServerName gitea.jiao77.cn
RewriteEngine On
RewriteRule ^/(.*)$ https://gitea.jiao77.cn/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName gitea.jiao77.cn
SSLEngine on
SSLCertificateFile /etc/ssl/jiao77/cert.pem
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://127.0.0.1:3012/
ProxyPassReverse / http://127.0.0.1:3012/
ErrorLog ${APACHE_LOG_DIR}/gitea-error.log
CustomLog ${APACHE_LOG_DIR}/gitea-access.log combined
</VirtualHost>
</IfModule>
# ============ AList ============
<VirtualHost *:80>
ServerName alist.jiao77.cn
RewriteEngine On
RewriteRule ^/(.*)$ https://alist.jiao77.cn/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName alist.jiao77.cn
SSLEngine on
SSLCertificateFile /etc/ssl/jiao77/cert.pem
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
# 如果 AList 后端是 HTTPS如 52443保持 https 代理;若是 http改为 http://127.0.0.1:<port>
ProxyPass / https://127.0.0.1:52443/
ProxyPassReverse / https://127.0.0.1:52443/
ErrorLog ${APACHE_LOG_DIR}/alist-error.log
CustomLog ${APACHE_LOG_DIR}/alist-access.log combined
</VirtualHost>
</IfModule>
# ============ Q-Nas ============
<VirtualHost *:80>
ServerName qnas.jiao77.cn
RewriteEngine On
RewriteRule ^/(.*)$ https://qnas.jiao77.cn/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName qnas.jiao77.cn
SSLEngine on
SSLCertificateFile /etc/ssl/jiao77/cert.pem
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://127.0.0.1:5666/
ProxyPassReverse / http://127.0.0.1:5666/
ErrorLog ${APACHE_LOG_DIR}/qnas-error.log
CustomLog ${APACHE_LOG_DIR}/qnas-access.log combined
</VirtualHost>
</IfModule>
# ============ nuc-Nas ============
<VirtualHost *:80>
ServerName nucnas.jiao77.cn
RewriteEngine On
RewriteRule ^/(.*)$ https://nucnas.jiao77.cn/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName nucnas.jiao77.cn
SSLEngine on
SSLCertificateFile /etc/ssl/jiao77/cert.pem
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://127.0.0.1:56661/
ProxyPassReverse / http://127.0.0.1:56661/
ErrorLog ${APACHE_LOG_DIR}/nucnas-error.log
CustomLog ${APACHE_LOG_DIR}/nucnas-access.log combined
</VirtualHost>
</IfModule>
# ============ RAGflow ============
<VirtualHost *:80>
ServerName ragflow.jiao77.cn
RewriteEngine On
RewriteRule ^/(.*)$ https://ragflow.jiao77.cn/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName ragflow.jiao77.cn
SSLEngine on
SSLCertificateFile /etc/ssl/jiao77/cert.pem
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://127.0.0.1:28081/
ProxyPassReverse / http://127.0.0.1:28081/
ErrorLog ${APACHE_LOG_DIR}/ragflow-error.log
CustomLog ${APACHE_LOG_DIR}/ragflow-access.log combined
</VirtualHost>
</IfModule>
# ============ Open WebUI ============
<VirtualHost *:80>
ServerName ai.jiao77.cn
RewriteEngine On
RewriteRule ^/(.*)$ https://ai.jiao77.cn/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName ai.jiao77.cn
SSLEngine on
SSLCertificateFile /etc/ssl/jiao77/cert.pem
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://127.0.0.1:38080/
ProxyPassReverse / http://127.0.0.1:38080/
# 常见 WebSocket 路径(按需调整)
ProxyPass /ws ws://127.0.0.1:38080/ws
ProxyPassReverse /ws ws://127.0.0.1:38080/ws
ErrorLog ${APACHE_LOG_DIR}/ai-error.log
CustomLog ${APACHE_LOG_DIR}/ai-access.log combined
</VirtualHost>
</IfModule>
# ============ Navidrome ============
<VirtualHost *:80>
ServerName music.jiao77.cn
RewriteEngine On
RewriteRule ^/(.*)$ https://music.jiao77.cn/$1 [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName music.jiao77.cn
SSLEngine on
SSLCertificateFile /etc/ssl/jiao77/cert.pem
SSLCertificateKeyFile /etc/ssl/jiao77/key.pem
SSLCertificateChainFile /etc/ssl/jiao77/chain.pem
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://127.0.0.1:45332/
ProxyPassReverse / http://127.0.0.1:45332/
ErrorLog ${APACHE_LOG_DIR}/music-error.log
CustomLog ${APACHE_LOG_DIR}/music-access.log combined
</VirtualHost>
</IfModule>
# ============ 缓存配置 ============
<IfModule mod_cache.c>
CacheRoot /var/cache/apache2/jiao77
CacheDirLevels 2
CacheDirLength 1
CacheMaxFileSize 10000000
CacheMinFileSize 1
CacheReadSize 0
CacheReadTime 3000
</IfModule>