vitaly_74
@vitaly_74

Что делаю не так с настройкой обратного прокси nginx + php?

пытаюсь настроить docker для работы проекта, у которого есть апи - php, и фронт на js, статику отдать получилось, а вот с пхп получились проблемы, запросы пхп не обрабатываются. ниже привел конфиг, в разделе Virtual_root - папка веб, т.к. для работы бека я использую yii2.
version: '2'

services:
  proxy:
    image: 'jwilder/nginx-proxy'
    container_name: 'proxy'
    ports:
      - '81:80'
    volumes:
      - './nginx/vhosts:/etc/nginx/vhost.d'
      - './nginx/config:/etc/nginx/conf.d'
      - '/var/run/docker.sock:/tmp/docker.sock:ro'
      - './nginx/certs:/etc/nginx/certs'

  app1:
    image: nginx
    container_name: js
    volumes:
      - '../frontend:/usr/share/nginx/html'
    environment:
      VIRTUAL_HOST: lit.my
    networks:
      - proxy

  app3:
    image: php:7.3-fpm
    container_name: php
    volumes:
      - '../backend:/var/www/html/'
    environment:
      VIRTUAL_HOST: api.lit.my
      VIRTUAL_ROOT: '/web'
    networks:
      - proxy
      
networks:
  proxy:
    driver: bridge

Вот логи которые отдает серер:
172.20.0.1, server: api.lit.my, request: "GET / HTTP/1.1", upstream: "http://api.lit.my/", host: "api.lit.my:81"
proxy    | nginx.1     | api.lit.my 172.20.0.1 - - [15/Feb/2022:06:47:01 +0000] "GET / HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36" "api.lit.my"
proxy    | nginx.1     | 2022/02/15 06:47:01 [error] 37#37: *1 no live upstreams while connecting to upstream, client: 172.20.0.1, server: api.lit.my, request: "GET /favicon.ico HTTP/1.1", upstream: "http://api.lit.my/favicon.ico", host: "api.lit.my:81", referrer: "http://api.lit.my:81/"
proxy    | nginx.1     | api.lit.my 172.20.0.1 - - [15/Feb/2022:06:47:01 +0000] "GET /favicon.ico HTTP/1.1" 502 559 "http://api.lit.my:81/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36" "api.lit.my"
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
vitaly_74
@vitaly_74 Автор вопроса
Решил проблему след. образом:
version: '2'

services:
  proxy:
    image: 'jwilder/nginx-proxy'
    container_name: 'proxy'
    ports:
      - '81:80'
    volumes:
      - './nginx/vhosts:/etc/nginx/vhost.d'
      - './nginx/config:/etc/nginx/conf.d'
      - '/var/run/docker.sock:/tmp/docker.sock:ro'
      - './nginx/certs:/etc/nginx/certs'

  nginx1:
    image: nginx
    container_name: nginx-static
    volumes:
      - '../frontend:/usr/share/nginx/html'
    environment:
      VIRTUAL_HOST: lit.my

#    networks:
#      - proxy

  nginx2:
    image: nginx
    container_name: nginx-php
    volumes:
#      - '../backend:/usr/share/nginx/html'
      - './nginx/config.yii2:/etc/nginx/conf.d'
    environment:
      VIRTUAL_HOST: api.lit.my
    links:
      - php
    volumes_from:
      - php

  php:
    image: php:7.3-fpm
    container_name: php
    volumes:
      - '../backend:/var/www/'


и конфиг nginx-php:
server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80;
    #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name api.lit.my;
    root        /var/www/web;
    index       index.php;

    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php$is_args$args;
    }

    #если хотите красивую страницу 404
    #error_page 404 /404.html;

    # deny accessing php files for the /assets directory
    location ~ ^/assets/.*\.php$ {
        deny all;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass php:9000;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        try_files $uri =404;
    }

    location ~* /\. {
        deny all;
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы