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配置检查完成');
|