Files
nxxmdata/government-backend/verify-nginx-government-config.js

153 lines
5.0 KiB
JavaScript
Raw Normal View History

2025-10-23 17:26:47 +08:00
const fs = require('fs');
const path = require('path');
// 读取nginx配置文件
const nginxConfigPath = path.join(__dirname, 'nginx.conf');
const nginxConfig = fs.readFileSync(nginxConfigPath, 'utf8');
console.log('检查政府端nginx配置...');
console.log('='.repeat(50));
// 检查政府端API代理配置
const governmentAPIConfigs = [
{
name: '认证API代理',
pattern: /location \^~ \/api\/auth\//,
expected: 'location ^~ /api/auth/'
},
{
name: '监管API代理',
pattern: /location \^~ \/api\/supervision\//,
expected: 'location ^~ /api/supervision/'
},
{
name: '疫情API代理',
pattern: /location \^~ \/api\/epidemic\//,
expected: 'location ^~ /api/epidemic/'
},
{
name: '政府API代理',
pattern: /location \^~ \/api\/government\//,
expected: 'location ^~ /api/government/'
},
{
name: '其他API代理',
pattern: /location ~ \^\/api\/\(personnel\|approval\|service\|visualization\|system\|files\|smart-earmark\|smart-host\|slaughter\|harmless\|harmless-place\|epidemic-record\|vaccine\|epidemic-activity\|production-material-certification\|approval-process\|cattle-academy\|device-warning\)\//,
expected: 'location ~ ^/api/(personnel|approval|service|...)/'
}
];
// 检查代理目标端口
const proxyTargets = [
{
name: '认证API代理目标',
pattern: /proxy_pass http:\/\/localhost:5352\/api\/auth\//,
expected: 'http://localhost:5352/api/auth/'
},
{
name: '监管API代理目标',
pattern: /proxy_pass http:\/\/localhost:5352\/api\/supervision\//,
expected: 'http://localhost:5352/api/supervision/'
},
{
name: '疫情API代理目标',
pattern: /proxy_pass http:\/\/localhost:5352\/api\/epidemic\//,
expected: 'http://localhost:5352/api/epidemic/'
},
{
name: '政府API代理目标',
pattern: /proxy_pass http:\/\/localhost:5352\/api\/government\//,
expected: 'http://localhost:5352/api/government/'
},
{
name: '其他API代理目标',
pattern: /proxy_pass http:\/\/localhost:5352\$request_uri/,
expected: 'http://localhost:5352$request_uri'
}
];
console.log('检查API代理配置:');
console.log('-'.repeat(30));
governmentAPIConfigs.forEach(config => {
const found = config.pattern.test(nginxConfig);
const status = found ? '✅' : '❌';
console.log(`${status} ${config.name}: ${found ? '已配置' : '未找到'}`);
if (!found) {
console.log(` 期望: ${config.expected}`);
}
});
console.log('\n检查代理目标配置:');
console.log('-'.repeat(30));
proxyTargets.forEach(config => {
const found = config.pattern.test(nginxConfig);
const status = found ? '✅' : '❌';
console.log(`${status} ${config.name}: ${found ? '已配置' : '未找到'}`);
if (!found) {
console.log(` 期望: ${config.expected}`);
}
});
// 检查CORS配置
console.log('\n检查CORS配置:');
console.log('-'.repeat(30));
const corsConfigs = [
{
name: 'Access-Control-Allow-Origin',
pattern: /add_header 'Access-Control-Allow-Origin' 'https:\/\/ad\.ningmuyun\.com' always;/,
expected: 'https://ad.ningmuyun.com'
},
{
name: 'Access-Control-Allow-Methods',
pattern: /add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;/,
expected: 'GET, POST, OPTIONS, PUT, DELETE'
},
{
name: 'Access-Control-Allow-Headers',
pattern: /add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, X-Requested-With' always;/,
expected: 'Authorization, Content-Type, X-Requested-With'
}
];
corsConfigs.forEach(config => {
const found = config.pattern.test(nginxConfig);
const status = found ? '✅' : '❌';
console.log(`${status} ${config.name}: ${found ? '已配置' : '未找到'}`);
if (!found) {
console.log(` 期望: ${config.expected}`);
}
});
// 统计配置数量
const totalAPIConfigs = governmentAPIConfigs.length;
const foundAPIConfigs = governmentAPIConfigs.filter(config => config.pattern.test(nginxConfig)).length;
const totalProxyTargets = proxyTargets.length;
const foundProxyTargets = proxyTargets.filter(config => config.pattern.test(nginxConfig)).length;
const totalCorsConfigs = corsConfigs.length;
const foundCorsConfigs = corsConfigs.filter(config => config.pattern.test(nginxConfig)).length;
console.log('\n' + '='.repeat(50));
console.log('配置检查结果汇总:');
console.log('='.repeat(50));
console.log(`API代理配置: ${foundAPIConfigs}/${totalAPIConfigs}`);
console.log(`代理目标配置: ${foundProxyTargets}/${totalProxyTargets}`);
console.log(`CORS配置: ${foundCorsConfigs}/${totalCorsConfigs}`);
const allConfigured = foundAPIConfigs === totalAPIConfigs &&
foundProxyTargets === totalProxyTargets &&
foundCorsConfigs === totalCorsConfigs;
if (allConfigured) {
console.log('\n🎉 所有政府端nginx配置检查通过');
} else {
console.log('\n⚠ 部分配置缺失请检查nginx.conf文件');
}
console.log('\n建议的nginx重载命令:');
console.log('sudo nginx -t && sudo nginx -s reload');