Jump to content
php.lv forumi

Docker nginx-proxy un HTTPS - 502 bad gateway


duncanf293

Recommended Posts

Palīgā, es nemāku Docker!

Mēģinu lietot pieredzējušākiem docker lietotājiem iespējams pazīstamo jwilder/nginx-proxy (https://github.com/nginx-proxy/nginx-proxy)
Mērķis ir standarta darbība - lokāli palaist nginx, kurš visu http trafiku uz porta 80 pārsūta uz https. Ar self-signed sertifikātu.

Nginx konfigurācijas fails un self-signed sertifikāti visticamāk ir pareizi, jo, ja nelietoju nginx-proxy vispār nemaz un vienkārši pieslēdzu savu nginx pa taisno host mašīnas portiem 80 un 443 - tad viss strādā. Savukārt, ja mēģinu vēl priekšā pielikt šo nginx-proxy, tad browserī atpakaļ saņemu 502 Bad Gateway.

It kā izdarīts viss, kas minēts dokumentācijā:
1. Kā environment mainīgie konteineram padoti VIRTUAL_HOST=mydomain.local, VIRTUAL_PROTO=https and VIRTUAL_PORT=443
2. Pašam nginx-proxy konteineram kā volume padota mape ar .crt un .key sertifikātiem

Un tomēr ir tas 502 Bad Gateway. Nginx error logs ir uzlikts uz "debug" līmenī, bet tajā logā tāpat nekas neiekrīt. Neredzu papildus iespējas, kā debugot.

Nginx config fails:

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {

    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    error_log  /var/www/storage/logs/nginx-error.log debug; # tukšs
    access_log /var/www/storage/logs/nginx-access.log; # tukšs

   # other things...
}

docker-compose.yml:

version: '3'

services:

  nginx:
    build:
      context: ../
      dockerfile: ./docker/nginx/Dockerfile

    environment:
      - VIRTUAL_HOST=mydomain.local
      - VIRTUAL_PROTO=https
      - VIRTUAL_PORT=443

    volumes:
      - ${BASE_PATH}/public:/var/www/public
      - ${BASE_PATH}/storage/logs/nginx-error.log:/var/www/storage/logs/nginx-error.log
      - ${BASE_PATH}/storage/logs/nginx-access.log:/var/www/storage/logs/nginx-access.log

self-signed sertifikātu ģenerācijai lietotā komanda:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -subj "/"

 

Link to comment
Share on other sites

  • 2 weeks later...
On 7/18/2020 at 1:47 PM, codehighriga said:

Problēma varētu būt tā, ka docker-compose.yml trūkst "expose". Zem expose ir jābūt portiem 80 un 443.

Ja Dockerfile ir bāzēts uz oficiālo nginx image bez izmaiņām, tad pēc noklusējuma expose ir tikai ports 80. Tā kā tu ļepini kopā SSL, tad tev vajag expose arī 443.

f***k, jā, paldies. Tā kā 80 automātiski ir exposed, tad baigi viegli aizmirst, ka 443 nav exposed.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...