mirror of
https://github.com/myronblair/novacpx
synced 2026-06-30 17:50:41 -05:00
Nginx proxy: local mode — Apache port migration, one-click enable/disable
- VhostManager: getApachePort() reads proxy_apache_port setting (default 80); writeApache() uses configured port; migrateApachePort() rewrites all vhosts and ports.conf; restoreApachePort() reverses the migration - ProxyManager::switchToLocalMode() — generator: installs nginx if needed, migrates Apache to 8090, configs nginx catch-all, starts nginx, syncs proxy hosts; rolls back Apache on nginx config failure - ProxyManager::disableLocalMode() — stops nginx, restores Apache to 80/443 - proxy.php: POST /api/proxy/switch-local and /api/proxy/disable-local (SSE stream) - admin.js: two-card "not configured" layout (Local Mode / Remote VM); proxySwitchLocal() modal with port picker + live progress stream; proxyDisableLocal() reverts with progress; 'Disable Local Mode' in service controls when mode=local Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -141,6 +141,39 @@ try {
|
||||
$action === 'test-remote' && $method === 'POST' =>
|
||||
Response::json(['success' => true, 'data' => ProxyManager::testRemote()]),
|
||||
|
||||
// POST switch-local — migrate Apache to internal port, install nginx, enable local proxy mode
|
||||
($action === 'switch-local') && $method === 'POST' => (function() use ($body) {
|
||||
header('Content-Type: text/event-stream');
|
||||
header('Cache-Control: no-cache');
|
||||
header('X-Accel-Buffering: no');
|
||||
ob_implicit_flush(true);
|
||||
while (ob_get_level() > 0) ob_end_flush();
|
||||
$port = (int)($body['apache_port'] ?? 8090);
|
||||
foreach (ProxyManager::switchToLocalMode($port) as $line) {
|
||||
echo 'data: ' . json_encode(['line' => $line]) . "\n\n";
|
||||
flush();
|
||||
}
|
||||
echo "data: " . json_encode(['done' => true]) . "\n\n";
|
||||
flush();
|
||||
exit;
|
||||
})(),
|
||||
|
||||
// POST disable-local — revert: Apache back to 80, stop nginx, disable proxy
|
||||
($action === 'disable-local') && $method === 'POST' => (function() {
|
||||
header('Content-Type: text/event-stream');
|
||||
header('Cache-Control: no-cache');
|
||||
header('X-Accel-Buffering: no');
|
||||
ob_implicit_flush(true);
|
||||
while (ob_get_level() > 0) ob_end_flush();
|
||||
foreach (ProxyManager::disableLocalMode() as $line) {
|
||||
echo 'data: ' . json_encode(['line' => $line]) . "\n\n";
|
||||
flush();
|
||||
}
|
||||
echo "data: " . json_encode(['done' => true]) . "\n\n";
|
||||
flush();
|
||||
exit;
|
||||
})(),
|
||||
|
||||
// POST setup-remote — run nginx setup on remote VM, stream output via SSE
|
||||
($action === 'setup-remote') && $method === 'POST' => (function() {
|
||||
header('Content-Type: text/event-stream');
|
||||
|
||||
Reference in New Issue
Block a user