153 lines
5.0 KiB
JavaScript
153 lines
5.0 KiB
JavaScript
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');
|