Hi,

Server configuration :
Centos 7 + PHP7 + PHP-FPM + MariaDB 10 +Nginx as reverse proxy for Apache + Virtualmin

I’m new to setting up a server. I’m not sure where did I mess up and I have tried searching online and editing according to suggestion on Digital Ocean and many other forum but still no success. I always restart nginx, httpd and php-fpm after changes have been made.

I have 2 virtual servers, all of them open Nginx test page instead of their respective homepage.

I have been trying to configure but with no success. Please help.

Below are the configuration files for my virtual servers.

1) etc/nginx/conf.d/default.conf

server {
        listen   80; 

        root /home/~;
        index index.php index.html index.htm;

        server_name localhost; 

        location / {
        try_files $uri $uri/ /index.php;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
        }

        location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        try_files $uri $uri/ =404;
        #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    #fastcgi_pass  127.0.0.1:9000;
         fastcgi_pass php-fpm;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;

         }

         location ~ /\.ht {
                deny all;
        }
}

2) etc/nginx/conf.d/php-fpm.conf

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
        #server 127.0.0.1:9000;
        server unix:/run/php-fpm/www.sock;

}

3) etc/nginx/nginx.conf

user nginx;
worker_processes auto; 

worker_rlimit_nofile 10000;

# only log critical errors
error_log /var/log/nginx/error.log crit;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

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

http {
    include    mime.types;
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    default_type  application/octet-stream;

    log_format main      '$remote_addr - $remote_user [$time_local]  '
      '"$request" $status $bytes_sent '
      '"$http_referer" "$http_user_agent" '
        '"$gzip_ratio"';

    log_format download  '$remote_addr - $remote_user [$time_local]  '
      '"$request" $status $bytes_sent '
      '"$http_referer" "$http_user_agent" '
        '"$http_range" "$sent_http_content_range"';

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

    # cache informations about FDs, frequently accessed files
    # can boost performance, but you need to test those values
    open_file_cache max=200000 inactive=20s; 
    open_file_cache_valid 2m; 
    open_file_cache_min_uses 5;
    open_file_cache_errors on;

    # to boost I/O on HDD we can disable access logs
    access_log off;
    # copies data between one FD and other from within the kernel
    # faster then read() + write()
    sendfile on;    
    # send headers in one peace, its better then sending them one by one 
    tcp_nopush on;
    # don't buffer data sent, good for small data bursts in real time
    tcp_nodelay on;

        types_hash_max_size 2048;
    index   index.php index.html index.htm;

        include /etc/nginx/conf.d/*.conf;
    index   index.php index.html index.htm;
    server_names_hash_bucket_size 128;
    ##
    # Gzip Settings
    ##
    # reduce the data that needs to be sent over network -- for testing environment
    gzip on;
       gzip_http_version 1.1;
    gzip_min_length 10240;
    gzip_proxied expired no-cache no-store private auth;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json  application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    # allow the server to close connection on non responding client, this will free up memory
    reset_timedout_connection on;
    # request timed out -- default 60
    client_body_timeout 3m;
    # if client stop responding, free up memory -- default 60
    send_timeout 3m;
    # server will close connection after this time -- default 75
    keepalive_timeout   65;
    # number of requests client can make over keep-alive -- for testing environment
    keepalive_requests 100000;

    ignore_invalid_headers on;
    client_max_body_size    100m;
    connection_pool_size  256;
    request_pool_size  4k;
    output_buffers   4 32k;
    postpone_output  1460;

    # limit the number of connections per single IP
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    # limit the number of requests for a given session
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
    # if the request body size is more than the buffer size, then the entire (or partial)
    # request body is written into a temporary file
    client_body_buffer_size  128k;
    # headerbuffer size for the request header from client -- for testing environment
    client_header_buffer_size 3m;
    # maximum number and size of buffers for large headers to read from client request
    large_client_header_buffers 4 256k;
    # how long to wait for the client to send a request header -- for testing environment
    client_header_timeout 3m;
      server_tokens off;

    #nginx compression
    log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"';

    # Upstream to abstract backend connection(s) for PHP.
    upstream php {
                #this should match value of "listen" directive in php-fpm pool
        #server unix:/tmp/php-fpm.sock;
        server 127.0.0.1:9000;
    }
    server {
        listen 80;
    #    listen       [::]:80 default_server;
        server_name _;
        #root         /home/~;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
        # zone which we want to limit by upper values, we want limit whole server
        limit_conn conn_limit_per_ip 10;
        limit_req zone=req_limit_per_ip burst=10 nodelay;

        location ~* .(woff|eot|ttf|svg|mp4|webm|jpg|jpeg|png|gif|ico|css|js)$ {
        expires max;
        }
        gzip on;
        access_log  /var/log/nginx/access.log  compression;
    }

   #1st virtual server

   server {
        listen 80;
        server_name website1.co www.website1.co;
        root /home/website1/public_html;
        index index.html index.htm index.php;
        access_log /var/log/virtualmin/website1_access_log;
        error_log /var/log/virtualmin/website1_error_log;

        # nginx configuration

        location / {
        #for web application
         if (!-e $request_filename){
         rewrite ^(/)?api/.*$ /api/index.php;
         }
         if (!-e $request_filename){
         rewrite ^(/)?customer/.*$ /customer/index.php;
         }
         if (!-e $request_filename){
         rewrite ^(/)?backend/.*$ /backend/index.php;
         }
         if (!-e $request_filename){
         rewrite ^(.*)$ /index.php;
         }
         index  index.html index.htm index.php;
         #web application end

        # [pre-existing configurations, if applicable]
        autoindex on;
        autoindex_exact_size off;

         client_max_body_size    10m;
        client_body_buffer_size 128k;

        proxy_send_timeout   90;
        proxy_read_timeout   90;
        proxy_buffer_size    128k;
        proxy_buffers     4 256k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
        proxy_connect_timeout 30s;

        proxy_set_header X-Real-IP  $remote_addr;
         proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;

         proxy_pass http://127.0.0.1:8080;
     }

     #error_page  404              /404.html;
     # redirect server error pages to the static page /50x.html
     #
     error_page   500 502 503 504  /50x.html;

     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
     #
     location ~ \.php$ {
         try_files $uri $uri/ /index.php?$args;
         fastcgi_index  index.php;
         #fastcgi_pass 127.0.0.1:9000;
         fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_split_path_info  ^(.+\.php)(.*)$;
         fastcgi_param  PATH_INFO        $fastcgi_path_info;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         fastcgi_param   SCRIPT_NAME        $fastcgi_script_name; 

         fastcgi_read_timeout 600s;
         fastcgi_send_timeout 600s;
         include fastcgi_params;
     }

     # deny access to .htaccess files, if Apache's document root
     # concurs with nginx's one
     #
     location ~ /\.ht {
        access_log off;
        log_not_found off;
         deny  all;
     }
        listen 443 ssl;
        ssl_certificate /home/website1/ssl.cert;
        ssl_certificate_key /home/website1/ssl.key;
    }

 #2nd virtual server

server {
        server_name website2.co www.website2.co;
        listen 80;
        root /home/website2/public_html;
        index index.html index.htm index.php;
        access_log /var/log/virtualmin/website2_access_log;
        error_log /var/log/virtualmin/website2_error_log;
        fastcgi_param GATEWAY_INTERFACE CGI/1.1;
        fastcgi_param SERVER_SOFTWARE nginx;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_param SCRIPT_FILENAME /home/website2/public_html$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param REQUEST_URI $request_uri;
        fastcgi_param DOCUMENT_URI $document_uri;
        fastcgi_param DOCUMENT_ROOT /home/website2/public_html;
        fastcgi_param SERVER_PROTOCOL $server_protocol;
        fastcgi_param REMOTE_ADDR $remote_addr;
        fastcgi_param REMOTE_PORT $remote_port;
        fastcgi_param SERVER_ADDR $server_addr;
        fastcgi_param SERVER_PORT $server_port;
        fastcgi_param SERVER_NAME $server_name;
        fastcgi_param HTTPS $https;
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    try_files $uri $uri/ =404;
            fastcgi_pass unix:/var/php-nginx/15028646429198.sock/socket;
                        include fastcgi.conf;

        }

        location / {
        client_max_body_size    10m;
        client_body_buffer_size 128k;

        proxy_send_timeout   90;
        proxy_read_timeout   90;
        proxy_buffer_size    128k;
        proxy_buffers     4 256k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
        proxy_connect_timeout 30s;

         proxy_set_header X-Real-IP  $remote_addr;
         proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;

         proxy_pass http://127.0.0.1:8080;
        }
        listen 443 ssl;
        ssl_certificate /home/website2/ssl.cert;
        ssl_certificate_key /home/website2/ssl.key;
    }

Any help would be very helpful.
Thanks in advance.

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
1 answer

Where ever your uploaded your web root, it isn’t /home/~, which is what you have in your conf file.

I run freebsd. Nginix default root is /usr/local/www/nginx. But distributions vary.

BTW, you might want to join the nginx mailing list. I’ve learned plenty there.
nginx mailing list

Submit an Answer