78 lines
2.3 KiB
JavaScript
78 lines
2.3 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));
|
|||
|
|
|
|||
|
|
// 检查server块
|
|||
|
|
const serverBlocks = nginxConfig.match(/server\s*{/g) || [];
|
|||
|
|
console.log(`发现 ${serverBlocks.length} 个server块`);
|
|||
|
|
|
|||
|
|
// 检查location块
|
|||
|
|
const locationBlocks = nginxConfig.match(/location\s+[^{]+{/g) || [];
|
|||
|
|
console.log(`发现 ${locationBlocks.length} 个location块`);
|
|||
|
|
|
|||
|
|
// 检查API相关的location块
|
|||
|
|
const apiLocationBlocks = locationBlocks.filter(block =>
|
|||
|
|
block.includes('/api') || block.includes('proxy_pass')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
console.log(`\nAPI相关的location块:`);
|
|||
|
|
apiLocationBlocks.forEach((block, index) => {
|
|||
|
|
console.log(`${index + 1}. ${block.trim()}`);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 检查是否有重复的location路径
|
|||
|
|
const locationPaths = locationBlocks.map(block => {
|
|||
|
|
const pathMatch = block.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('\n❌ 发现重复的location路径:');
|
|||
|
|
duplicatePaths.forEach(path => {
|
|||
|
|
console.log(` - ${path}`);
|
|||
|
|
});
|
|||
|
|
} else {
|
|||
|
|
console.log('\n✅ 没有重复的location路径');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 检查proxy_pass配置
|
|||
|
|
const proxyPassBlocks = nginxConfig.match(/proxy_pass\s+[^;]+;/g) || [];
|
|||
|
|
console.log(`\nproxy_pass配置:`);
|
|||
|
|
proxyPassBlocks.forEach((block, index) => {
|
|||
|
|
console.log(`${index + 1}. ${block.trim()}`);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 检查是否有路径重复的proxy_pass
|
|||
|
|
const problematicProxyPass = proxyPassBlocks.filter(block => {
|
|||
|
|
const url = block.match(/proxy_pass\s+([^;]+);/);
|
|||
|
|
if (url) {
|
|||
|
|
const proxyUrl = url[1].trim();
|
|||
|
|
// 检查是否以/api/结尾
|
|||
|
|
return proxyUrl.endsWith('/api/');
|
|||
|
|
}
|
|||
|
|
return false;
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (problematicProxyPass.length > 0) {
|
|||
|
|
console.log('\n⚠️ 发现可能有问题的proxy_pass配置:');
|
|||
|
|
problematicProxyPass.forEach(block => {
|
|||
|
|
console.log(` - ${block.trim()}`);
|
|||
|
|
});
|
|||
|
|
console.log(' 这些配置可能导致路径重复问题');
|
|||
|
|
} else {
|
|||
|
|
console.log('\n✅ proxy_pass配置看起来正常');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
console.log('\n' + '='.repeat(50));
|
|||
|
|
console.log('nginx配置检查完成');
|