Как указать два URL-адреса на разные местоположения Docker-контейнеров в Nginx? - PullRequest
0 голосов
/ 25 апреля 2019

Кажется, я могу получить только местоположение root (/) в моей конфигурации nginx. Я получаю сообщение об ошибке независимо от того, какой блок местоположения я укажу.

webserver               | 2019/04/25 14:20:48 [emerg] 1#1: unknown "url" variable
webserver               | nginx: [emerg] unknown "url" variable

Пока что я скопировал ту же конфигурацию блока местоположения, что и мой корень, и просто добавил параметр url (/ pg) и изменил имя контейнера докера, который прекрасно работает для корня.

nginx.conf

server {
        listen 80;
        listen [::]:80;
        server_name api.mysite.dev;

        location ~ /.well-known/acme-challenge {
          allow all;
          root /var/www/html;
        }

        location / {
                rewrite ^ https://$host$request_uri? permanent;
        }
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name api.mysite.dev;

        server_tokens off;

        ssl_certificate /etc/letsencrypt/live/api.mysite.dev/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/api.mysite.dev/privkey.pem;

        ssl_buffer_size 8k;

        ssl_dhparam /etc/ssl/certs/dhparam-2048.pem;

        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
        ssl_prefer_server_ciphers on;

        ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

        ssl_ecdh_curve secp384r1;
        ssl_session_tickets off;

        ssl_stapling on;
        ssl_stapling_verify on;
        resolver 8.8.8.8;

        location / {
                try_files $uri @api-graphql;
        }

        location @api-graphql {
                proxy_pass http://api-graphql:8080;
                add_header X-Frame-Options "SAMEORIGIN" always;
                add_header X-XSS-Protection "1; mode=block" always;
                add_header X-Content-Type-Options "nosniff" always;
                add_header Referrer-Policy "no-referrer-when-downgrade" always;
                add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
                # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
                # enable strict transport security only if you understand the implications
        }

        location /pg/ {
                try_files $uri @api-postgres-pgadmin;
        }

        location @api-postgres-pgadmin {
                proxy_pass http://api-postgres-pgadmin:8080;
                add_header X-Frame-Options "SAMEORIGIN" always;
                add_header X-XSS-Protection "1; mode=block" always;
                add_header X-Content-Type-Options "nosniff" always;
                add_header Referrer-Policy "no-referrer-when-downgrade" always;
                add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
                # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
                # enable strict transport security only if you understand the implications
        }

        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;
}

docker-compose.yml (контейнер pgadmin)

  api-postgres-pgadmin:
    container_name: api-postgres-pgadmin
    image: dpage/pgadmin4:latest
    networks:
      - app-network
    ports:
      - "8080:8080"
    environment:
      - PGADMIN_DEFAULT_EMAIL=email@gmail.com
      - PGADMIN_DEFAULT_PASSWORD=stuff
    depends_on:
      - api-postgres
...