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

143 lines
3.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

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));
// 检查是否存在路径冲突
const apiLocationPatterns = [
{
name: '养殖端API (旧)',
pattern: /location \/api\//,
shouldExist: false,
description: '旧的养殖端API路径应该被移除'
},
{
name: '养殖端API (新)',
pattern: /location \^~ \/farm-api\//,
shouldExist: true,
description: '新的养殖端API路径'
},
{
name: '政府端API',
pattern: /location \^~ \/api\//,
shouldExist: true,
description: '政府端API路径'
},
{
name: '银行端API',
pattern: /location \^~ \/bank\/api\//,
shouldExist: true,
description: '银行端API路径'
},
{
name: '保险端API',
pattern: /location \^~ \/insurance\/api\//,
shouldExist: true,
description: '保险端API路径'
}
];
console.log('检查API路径配置:');
console.log('-'.repeat(30));
let allCorrect = true;
apiLocationPatterns.forEach(config => {
const found = config.pattern.test(nginxConfig);
const status = found === config.shouldExist ? '✅' : '❌';
if (found !== config.shouldExist) {
allCorrect = false;
}
console.log(`${status} ${config.name}: ${found ? '存在' : '不存在'}`);
console.log(` ${config.description}`);
});
// 检查代理目标端口
const proxyTargets = [
{
name: '政府端代理目标',
pattern: /proxy_pass http:\/\/localhost:5352\/api\//,
expected: 'http://localhost:5352/api/'
},
{
name: '养殖端代理目标',
pattern: /proxy_pass http:\/\/localhost:5350\/api\//,
expected: 'http://localhost:5350/api/'
},
{
name: '银行端代理目标',
pattern: /proxy_pass http:\/\/localhost:5351\/api\//,
expected: 'http://localhost:5351/api/'
},
{
name: '保险端代理目标',
pattern: /proxy_pass http:\/\/localhost:3000\/api\//,
expected: 'http://localhost:3000/api/'
}
];
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}`);
}
});
// 检查是否有重复的location规则
console.log('\n检查重复的location规则:');
console.log('-'.repeat(30));
const locationMatches = nginxConfig.match(/location\s+[^{]+{/g) || [];
const locationPaths = locationMatches.map(match => {
const pathMatch = match.match(/location\s+([^{]+)/);
return pathMatch ? pathMatch[1].trim() : '';
});
const duplicatePaths = locationPaths.filter((path, index) =>
locationPaths.indexOf(path) !== index && path !== ''
);
if (duplicatePaths.length > 0) {
console.log('❌ 发现重复的location规则:');
duplicatePaths.forEach(path => {
console.log(` - ${path}`);
});
allCorrect = false;
} else {
console.log('✅ 没有重复的location规则');
}
console.log('\n' + '='.repeat(50));
console.log('配置验证结果:');
console.log('='.repeat(50));
if (allCorrect) {
console.log('🎉 nginx配置修复成功');
console.log('✅ 路径冲突已解决');
console.log('✅ 各端API路径正确配置');
console.log('✅ 代理目标端口正确');
} else {
console.log('⚠️ nginx配置需要进一步修复');
console.log('请检查上述错误并修复');
}
console.log('\n建议的nginx重载命令:');
console.log('sudo nginx -t && sudo nginx -s reload');
console.log('\n修复说明:');
console.log('1. 将养殖端API路径从 /api/ 改为 /farm-api/');
console.log('2. 避免与政府端 /api/ 路径冲突');
console.log('3. 政府端API现在可以正常访问');
console.log('4. 各端API路径互不冲突');