Files
nxxmdata/government-backend/verify-nginx-government-config.js
2025-10-23 17:26:47 +08:00

153 lines
5.0 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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');