Запуск сервера Go за обратным прокси-сервером Nginx с SSL - PullRequest
0 голосов
/ 20 января 2019

Я немного покопался в паутинах и не смог найти ничего подобного (по крайней мере, рядом с любым решением, которое у меня сработало).

По сути, я запускаю сервер Golang локально на 127.0.0.1:1337, я хочу, чтобы он был доступен глобально, поэтому я использую Nginx для пересылки трафика из https://api.example.com/ в мой API для получения информации.

При этом я просто настроил свой сервер Golang для прослушивания и обслуживания на порту 1337, а моя конфигурация Nginx настроена на перенаправление всего трафика HTTP (для всех доменов) на HTTPS:

server {
    listen 80 default_server;

    server_name _; 
    return 301 https://$host$request_uri;
}

и затем я перенаправляю трафик на порт 1337 здесь:

server {
    server_name api.example.com;
    location / {
        proxy_pass http://127.0.0.1:1337;
    }

    listen 443 ssl;
    ssl_certificate_key /etc/nginx/ssl/private.key;
    ssl_certificate /etc/nginx/ssl/cert.crt;   
}

Проблема заключается в том, что я продолжаю получать перенаправления с HTTPS на HTTP (согласно wget ), и в итоге получаю ошибку Too Many Redirects.

Если кто-нибудь может дать какое-то руководство, я буду очень признателен!

1 Ответ

0 голосов
/ 20 января 2019

server_name _; соответствует имени сервера, который не может найти совпадения.

Я делал это раньше.

См. Мой конфиг nginx для proxy api backend:

# ssl
ssl_certificate      /etc/nginx/cert/live/ybilly.com/fullchain.pem;
ssl_certificate_key  /etc/nginx/cert/live/ybilly.com/privkey.pem;

# http to https
server {
  listen 80 default_server;
  listen [::]:80 default_server;
  server_name ybilly.com www.ybilly.com *.ybilly.com;
  return 301 https://$host$request_uri;
}

# api backend
server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name *.ybilly.com;

  location / {
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    proxy_set_header Host $host;
    proxy_set_header X-Real-Ip $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass_header Set-Cookie;
    proxy_read_timeout                 900;
    proxy_buffers 32 4k;
    proxy_pass http://127.0.0.1:8080/;
  }

}

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