Estoy usando macOS. Estoy trabajando en una imagen de Debian creada a través de Dockerfile. Nginx, php-fpm se instaló en la imagen de Debian. Luego copié el archivo server en /etc/nginx/sites-available/server y creé su archivo de enlace simbólico en /etc/nginx/sites-enabled/. También copió archivos srcs/info.php a /var/www/server/info.php. Después de iniciar el servicio nginx, puedo acceder a mi dirección IP privada 192.168.0.46 y ver la página de bienvenida de NGINX. Sin embargo, al acceder a 192.168.0.46/info.php, la apertura de la página falla. Esto es lo mismo cuando se insertan otros archivos html.

Lo busqué en Google y descubrí que era un problema INCLUDE de /etc/nginx/nginx.conf, pero no había ningún problema.

La primera pregunta que sospeché fue el firewall, pero si ese era el problema, ¿no debería poder ver la página de bienvenida de Nginx? He estado pensando y buscando todo el día, pero no pude obtener una respuesta. ¡Por favor, ayúdame!

Aquí están mis archivos:

Dockerfile:

FROM debian:buster

ARG DEBIAN_FRONTEND=noninteractive
ENV USER=root

COPY srcs/server.sites-available /etc/nginx/sites-available/server
COPY srcs/info.php /var/www/server/info.php
COPY srcs/login_form.html /var/www/server/login_form.html

# Installed mariadb-server instead of mysql-server

RUN apt-get update && apt-get upgrade -y && \
    apt-get install -y --no-install-recommends --no-install-suggests \
        nginx \
        openssl \
        mariadb-server \
        php-fpm \
        php-mysql && \
    ln -s /etc/nginx/sites-available/server /etc/nginx/sites-enabled/

CMD service mysql start; \
    service nginx start; \
    bash;

# EXPOSE 80 for HTTP and 443 for HTTPS
EXPOSE 80 443

Server.sites-available:

server {
    listen 80;
    listen [::]:80;

    root /var/www/server;
    index index.php index.html index.htm;

    server_name server;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }
}

Info.php:

<?php
phpinfo();
?>

Nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Aquí están mis comandos:

$ docker build -t server_image .
$ docker run -it -P --rm --name server_container server_image
2
Dancing Cat 21 sep. 2020 a las 21:41

2 respuestas

La mejor respuesta

Use docker run -it -p 80:80 --rm --name server_container server_image para solucionarlo. Pero no sé por qué ...

0
Dancing Cat 22 sep. 2020 a las 12:06

La directiva server_name server significa que solo se atenderán las solicitudes de http://server.

Debe agregar 192.168.0.46 server a su hosts archivo.

También recomendaría cambiar el nombre_servidor a algo más como myserver.local (y agregarlo al archivo hosts)

0
Arik 21 sep. 2020 a las 19:53