skip to Main Content

I’m using macOS. I’m working on a Debian image created through Dockerfile. Nginx, php-fpm was installed in Debian image. Then I copied server file to /etc/nginx/sites-available/server and created its symbolic link file in /etc/nginx/sites-enabled/. It also copied srcs/info.php files to /var/www/server/info.php.
After starting nginx service, I can access my private IP address 192.168.0.46 and see NGINX’s welcome page. However, when accessing 192.168.0.46/info.php, page opening fails. This is the same when other html files are inserted.

I looked it up on Google and found out that it was an INCLUDE problem of /etc/nginx/nginx.conf, but there was no problem.

The first question I suspected was the firewall, but if it was the problem, shouldn’t I not be able to see the welcome page of Nginx?
I’ve been thinking and searching all day, but I couldn’t get an answer. Please help me!

Here is my files:

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/*;
}

Here is my commands:

$ docker build -t server_image .
$ docker run -it -P --rm --name server_container server_image

2

Answers


  1. Chosen as BEST ANSWER

    use docker run -it -p 80:80 --rm --name server_container server_image to fix it. But I don't know why...


  2. The server_name server directive means that only requests for http://server will be served.

    You should add 192.168.0.46 server to your hosts file.

    I’d also recommend changing the server_name to something else like myserver.local (and add that to the hosts file)

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search