Использование nginX и HTTPS загружает файл index.php вместо его рендеринга - PullRequest
0 голосов
/ 20 июня 2019

Я использую докер с nginx.

Когда я захожу на:

http://www.mypage.com

Все хорошо, но когда я добавляю HTTPS, он буквально просто загружает индекс.php.

В журналах ничего не написано, поэтому я не уверен, с чего начать.

Вот моя соответствующая конфигурация:

Docker-compose.yml:

php:
    image: myImage
    ports:
        - "9000:9001"
    volumes:
        - home/me/my-site/:/var/www/symfony:cached

        - ./logs/symfony:/var/www/symfony/var/log:cached
    extra_hosts:
        - "docker-host.localhost:127.0.0.1"
        - "otherhost:10.5.221.132"
nginx:
    build: ./nginx
    ports:
        - "80:80"
        - "443:443"
    links:
        - php
    volumes:
        - ./logs/nginx:/var/log/nginx:cached
        - /home/me/my-site/:/var/www/symfony:cached
        - ./nginx/my-site.com.crt:/etc/nginx/my-site.com.crt
        - ./nginx/my-site.com.key:/etc/nginx/my-site.com.key

Мой докер-файл:

FROM alpine:3.8

RUN apk add --update nginx
RUN rm -rf /var/cache/apk/* && rm -rf /tmp/*

ADD nginx.conf /etc/nginx/
ADD symfony.conf /etc/nginx/conf.d/
ADD fastcgi_params /etc/nginx/
ADD my-site.com.crt /etc/nginx/
ADD my-site.com.key /etc/nginx/

RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf

RUN adduser -D -g '' -G www-data www-data

CMD ["nginx"]

EXPOSE 80
EXPOSE 443

Мой nginx.conf

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
  worker_connections  2048;
  multi_accept on;
  use epoll;
}

http {
  server_tokens off;
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 15;
  types_hash_max_size 2048;
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  access_log off;
  error_log off;
  gzip on;
  gzip_disable "msie6";
  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
  open_file_cache max=100;
  client_body_temp_path /tmp 1 2;
  client_body_buffer_size 256k;
  client_body_in_file_only off;

  server {
      listen              443 ssl;
      server_name         symfony.localhost;
      ssl_certificate     /etc/nginx/my-site.com.crt;
      ssl_certificate_key /etc/nginx/my-site.com.key;
      root        /var/www/symfony/public/;
      index index.php;
   }
}

daemon off;

1 Ответ

1 голос
/ 20 июня 2019

В вашей конфигурации nginx нет обработки php, для прослушивания php-файлов вам нужно что-то вроде ниже

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

Дополнительная информация https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm

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