65 lines
2.9 KiB
JavaScript
65 lines
2.9 KiB
JavaScript
|
|
/**
|
|||
|
|
* 正确测试广州Nginx代理
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
const GZ = { ip: '43.139.217.141', port: 3910, key: 'zy_gtw_4a155446b7acc09fe46a2a29972c0ca5d9954da19c35dc23' }
|
|||
|
|
|
|||
|
|
async function callGK(srv, method, path, body = null) {
|
|||
|
|
const url = `http://${srv.ip}:${srv.port}${path}`
|
|||
|
|
const opts = { method, headers: { 'Authorization': `Bearer ${srv.key}`, 'Content-Type': 'application/json' } }
|
|||
|
|
if (body) opts.body = JSON.stringify(body)
|
|||
|
|
const res = await fetch(url, opts)
|
|||
|
|
const text = await res.text()
|
|||
|
|
try { return { status: res.status, data: JSON.parse(text) } }
|
|||
|
|
catch { return { status: res.status, data: { raw: text } } }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
async function exec(srv, cmd) {
|
|||
|
|
const r = await callGK(srv, 'POST', '/exec', { cmd })
|
|||
|
|
return r.data
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
async function main() {
|
|||
|
|
console.log('═'.repeat(50))
|
|||
|
|
console.log('📡 广州Nginx全链路测试')
|
|||
|
|
console.log('═'.repeat(50))
|
|||
|
|
|
|||
|
|
// 1. 测试本地Nginx + 正确Host头
|
|||
|
|
console.log('\n1️⃣ 本地Nginx + Host头:')
|
|||
|
|
const tests = [
|
|||
|
|
['https://localhost/images/ (默认Host)', `curl -s -k --connect-timeout 5 -w "\\nHTTP:%{http_code}" https://localhost/images/ 2>&1 | tail -3`],
|
|||
|
|
['https://localhost/images/ (Host:guanghulab.com)', `curl -s -k --connect-timeout 5 -H "Host: guanghulab.com" -w "\\nHTTP:%{http_code}" https://localhost/images/ 2>&1 | tail -3`],
|
|||
|
|
['http://localhost/images/ (Host:guanghulab.com)', `curl -s --connect-timeout 5 -H "Host: guanghulab.com" -w "\\nHTTP:%{http_code}" http://localhost/images/ 2>&1 | tail -3`],
|
|||
|
|
['https://localhost/ (首页)', `curl -s -k --connect-timeout 5 -H "Host: guanghulab.com" -w "\\nHTTP:%{http_code}" https://localhost/ 2>&1 | tail -3`],
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
for (const [name, cmd] of tests) {
|
|||
|
|
const r = await exec(GZ, cmd)
|
|||
|
|
console.log(` ${name}:`)
|
|||
|
|
console.log(` ${(r.stdout || r.stderr || '').split('\\n').slice(-3).join('\\n ')}`)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 2. 查看Nginx的错误日志
|
|||
|
|
console.log('\n2️⃣ Nginx错误日志(最后10行):')
|
|||
|
|
const r1 = await exec(GZ, 'tail -10 /var/log/nginx/error.log 2>&1 || echo "no error log"')
|
|||
|
|
console.log(' ', (r1.stdout || r1.stderr || '').slice(0, 500))
|
|||
|
|
|
|||
|
|
// 3. 检查代理的配置是否真的在正确位置
|
|||
|
|
console.log('\n3️⃣ 完整SSL server块检查:')
|
|||
|
|
const r2 = await exec(GZ, "sed -n '/listen 443 ssl/,/^}$/p' /etc/nginx/sites-enabled/guanghulab | head -60")
|
|||
|
|
console.log(r2.stdout || r2.stderr)
|
|||
|
|
|
|||
|
|
// 4. 也检查一下Nginx的端口监听状态
|
|||
|
|
console.log('\n4️⃣ Nginx端口:')
|
|||
|
|
const r3 = await exec(GZ, 'ss -tlnp | grep nginx')
|
|||
|
|
console.log(r3.stdout || r3.stderr)
|
|||
|
|
|
|||
|
|
// 5. 直接通过新加坡IP测试广州的代理设置
|
|||
|
|
console.log('\n5️⃣ 通过广州访问新加坡/images/:')
|
|||
|
|
const SG_IP = '43.156.237.110'
|
|||
|
|
const r4 = await exec(GZ, `curl -s --connect-timeout 5 -w "\\nHTTP:%{http_code}" http://${SG_IP}/images/ -H "Host: guanghulab.com" 2>&1 | tail -3`)
|
|||
|
|
console.log(' http://SG_IP/images/ (Host:guanghulab.com):', (r4.stdout || '').slice(0, 100))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
main().catch(err => console.error('❌', err))
|