Use main listen for nginx
This commit is contained in:
@@ -79,6 +79,11 @@ func loadConfig(yamlFile string) Config {
|
|||||||
log.Fatalf("Failed to parse YAML: %v", err)
|
log.Fatalf("Failed to parse YAML: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set default listen port if not configured
|
||||||
|
if len(config.Listen) == 0 {
|
||||||
|
config.Listen = []string{":8080"}
|
||||||
|
}
|
||||||
|
|
||||||
// Set defaults for log entries
|
// Set defaults for log entries
|
||||||
for i := range config.Logs {
|
for i := range config.Logs {
|
||||||
if config.Logs[i].PoolSize == 0 {
|
if config.Logs[i].PoolSize == 0 {
|
||||||
|
@@ -10,8 +10,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const nginxTemplate = `server {
|
const nginxTemplate = `server {
|
||||||
listen 8080;
|
listen {{.ListenPort}};
|
||||||
listen [::]:8080;
|
listen [::]:{{.ListenPort}};
|
||||||
|
|
||||||
# Replace with your actual domain(s)
|
# Replace with your actual domain(s)
|
||||||
server_name {{.MonitoringHost}};
|
server_name {{.MonitoringHost}};
|
||||||
@@ -70,13 +70,23 @@ const nginxTemplate = `server {
|
|||||||
`
|
`
|
||||||
|
|
||||||
type NginxTemplateData struct {
|
type NginxTemplateData struct {
|
||||||
MonitoringHost string
|
MonitoringHost string
|
||||||
LocalDirectory string
|
LocalDirectory string
|
||||||
|
ListenPort string
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateNginx(yamlFile string) {
|
func generateNginx(yamlFile string) {
|
||||||
config := loadConfig(yamlFile)
|
config := loadConfig(yamlFile)
|
||||||
|
|
||||||
|
// Extract port from first listen address
|
||||||
|
listenPort := "8080" // fallback default
|
||||||
|
if len(config.Listen) > 0 {
|
||||||
|
port := extractPort(config.Listen[0])
|
||||||
|
if port != "" {
|
||||||
|
listenPort = port
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, log := range config.Logs {
|
for _, log := range config.Logs {
|
||||||
// Extract hostname from monitoring prefix
|
// Extract hostname from monitoring prefix
|
||||||
hostname, err := extractHostname(log.MonitoringPrefix)
|
hostname, err := extractHostname(log.MonitoringPrefix)
|
||||||
@@ -87,8 +97,9 @@ func generateNginx(yamlFile string) {
|
|||||||
|
|
||||||
// Create template data
|
// Create template data
|
||||||
data := NginxTemplateData{
|
data := NginxTemplateData{
|
||||||
MonitoringHost: hostname,
|
MonitoringHost: hostname,
|
||||||
LocalDirectory: log.LocalDirectory,
|
LocalDirectory: log.LocalDirectory,
|
||||||
|
ListenPort: listenPort,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse and execute template
|
// Parse and execute template
|
||||||
@@ -121,6 +132,25 @@ func generateNginx(yamlFile string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func extractPort(listenAddr string) string {
|
||||||
|
// Handle common listen address formats:
|
||||||
|
// ":8080" -> "8080"
|
||||||
|
// "localhost:8080" -> "8080"
|
||||||
|
// "[::]:8080" -> "8080"
|
||||||
|
|
||||||
|
if strings.HasPrefix(listenAddr, ":") {
|
||||||
|
return listenAddr[1:] // Remove the leading ":"
|
||||||
|
}
|
||||||
|
|
||||||
|
// For addresses with host:port format
|
||||||
|
if strings.Contains(listenAddr, ":") {
|
||||||
|
parts := strings.Split(listenAddr, ":")
|
||||||
|
return parts[len(parts)-1] // Return the last part (port)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func extractHostname(urlStr string) (string, error) {
|
func extractHostname(urlStr string) (string, error) {
|
||||||
if !strings.HasPrefix(urlStr, "http://") && !strings.HasPrefix(urlStr, "https://") {
|
if !strings.HasPrefix(urlStr, "http://") && !strings.HasPrefix(urlStr, "https://") {
|
||||||
urlStr = "https://" + urlStr
|
urlStr = "https://" + urlStr
|
||||||
|
Reference in New Issue
Block a user