Тайм-ауты вверх по течению между goapp systemd nginx - PullRequest
0 голосов
/ 26 октября 2019

В Ubuntu 18.04LTS я использую nginx для обратного прокси-приложения.

Это работает, когда я запускаю goapp из командной строки, но когда я пытался поставить goapp под контроль systemd. nginx дает "502 Bad Gateway". Я думаю, что это как-то связано с systemd, портами и, возможно, разветвлением?

Любая помощь будет принята с благодарностью. Журнал ошибок nginx показывает следующее для каждой попытки подключения:

 2019/10/26 15:24:52 [error] 11974#11974: *1 upstream prematurely closed connection while reading response header from upstream, client: 217.42.177.154, server: _, request: "GET /codcall HTTP/1.1", upstream: "http://127.0.0.1:8001/codcall", host: "167.99.192.223"

Моя конфигурация приложения systemd выглядит следующим образом:

[Unit]
Description=CodCall web service

[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/home/codcall/surf-get/codcall

[Install]
WantedBy=multi-user.target

При работе под systemd я получаю следующее для статуса

codcall.service - CodCall web service
   Loaded: loaded (/lib/systemd/system/codcall.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-10-26 15:24:07 UTC; 19min ago
 Main PID: 11847 (codcall)
    Tasks: 6 (limit: 1152)
   CGroup: /system.slice/codcall.service
           └─11847 /home/codcall/surf-get/codcall

Oct 26 15:37:41 codcall-ubuntu codcall[11847]: net/http.HandlerFunc.ServeHTTP(0x832a60, 0x8a2320, 0xc00025e0
Oct 26 15:37:41 codcall-ubuntu codcall[11847]:         /usr/lib/go-1.13/src/net/http/server.go:2007 +0x44
Oct 26 15:37:41 codcall-ubuntu codcall[11847]: net/http.(*ServeMux).ServeHTTP(0xb16240, 0x8a2320, 0xc00025e0
Oct 26 15:37:41 codcall-ubuntu codcall[11847]:         /usr/lib/go-1.13/src/net/http/server.go:2387 +0x1bd
Oct 26 15:37:41 codcall-ubuntu codcall[11847]: net/http.serverHandler.ServeHTTP(0xc0000ac000, 0x8a2320, 0xc0
Oct 26 15:37:41 codcall-ubuntu codcall[11847]:         /usr/lib/go-1.13/src/net/http/server.go:2802 +0xa4
Oct 26 15:37:41 codcall-ubuntu codcall[11847]: net/http.(*conn).serve(0xc0000783c0, 0x8a2c60, 0xc000014040)
Oct 26 15:37:41 codcall-ubuntu codcall[11847]:         /usr/lib/go-1.13/src/net/http/server.go:1890 +0x875
Oct 26 15:37:41 codcall-ubuntu codcall[11847]: created by net/http.(*Server).Serve
Oct 26 15:37:41 codcall-ubuntu codcall[11847]:         /usr/lib/go-1.13/src/net/http/server.go:2927 +0x38e

Мое приложение go использует следующее для прослушивания и обслуживания:

func main() {
        http.HandleFunc("/", indexHandler)
        http.ListenAndServe(":8001", nil)

}

И моя конфигурация nginx выглядит следующим образом: я оставил / in, чтобы проверить, что nginx работает и по-прежнему обслуживает/ as "Добро пожаловать в nginx"

server {
        listen 80 default_server;
        listen [::]:80 default_server;

 location /codcall {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_pass http://localhost:8001;
   }


        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
}

1 Ответ

0 голосов
/ 27 октября 2019

Оказывается, что программа go, работающая под systemd, не смогла найти мой файл шаблона. Как только я указал полный путь к файлу шаблона в приложении go, все заработало.

Так что

t, _ := template.ParseFiles("template.gohtml")

должно было стать

t, _ := template.ParseFiles("/home/myapp/mytemplates/template.gohtml")

Я также должен был проверить, не изменился ли мой шаблон var n *. 1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...