Need Help to Fix Nginx Configuration Issue for Flarum App on Nginx Only Server

Hello Everyone,

Here I’m Sharing an nginx.conf file, and I want to use this but it gives error …

NGINX CONF (Required One)

# Pass requests that don't refer directly to files in the filesystem to index.php
location / {
  try_files $uri $uri/ /index.php?$query_string;
}

# Uncomment the following lines if you are not using a `public` directory
# to prevent sensitive resources from being exposed.
# location ~* ^/(\.git|composer\.(json|lock)|auth\.json|config\.php|flarum|storage|vendor) {
#   deny all;
#   return 404;
# }

# The following directives are based on best practices from H5BP Nginx Server Configs
# https://github.com/h5bp/server-configs-nginx

# Expire rules for static content
location ~* \.(?:manifest|appcache|html?|xml|json)$ {
  add_header Cache-Control "max-age=0";
}

location ~* \.(?:rss|atom)$ {
  add_header Cache-Control "max-age=3600";
}

location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
  add_header Cache-Control "max-age=2592000";
  access_log off;
}

location ~* \.(?:css|js)$ {
  add_header Cache-Control "max-age=31536000";
  access_log off;
}

location ~* \.(?:ttf|ttc|otf|eot|woff|woff2)$ {
  add_header Cache-Control "max-age=2592000";
  access_log off;
}

# Gzip compression
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
    application/atom+xml
    application/javascript
    application/json
    application/ld+json
    application/manifest+json
    application/rss+xml
    application/vnd.geo+json
    application/vnd.ms-fontobject
    application/x-font-ttf
    application/x-web-app-manifest+json
    application/xhtml+xml
    application/xml
    font/opentype
    image/bmp
    image/svg+xml
    image/x-icon
    text/cache-manifest
    text/css
    text/plain
    text/vcard
    text/vnd.rim.location.xloc
    text/vtt
    text/x-component
    text/x-cross-domain-policy;

Error when I simply include it with default Configuration file for the domain is : nginx: [emerg] “location” directive is not allowed here in /home/{user}/web/{domain}/public_html/.nginx.conf:2

If Anyone can help me to create a Nginx Template for this, Please Guide me.

With out the domain nginx config we can’t do any thing

Here it is

#=======================================================================#
# Default Web Domain Template                                           #
# DO NOT MODIFY THIS FILE! CHANGES WILL BE LOST WHEN REBUILDING DOMAINS #
#=======================================================================#

server {
    listen      xxx.xxx.xxx.xxx:80;
    server_name domain.tld ;
    root        /home/user/web/domain.tld/public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/domain.tld.log combined;
    access_log  /var/log/nginx/domains/domain.tld.bytes bytes;
    error_log   /var/log/nginx/domains/domain.tld.error.log error;
        
    include /home/user/conf/web/domain.tld/nginx.forcessl.conf*;

    location / {

        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
            fastcgi_hide_header "Set-Cookie";
        }

        location ~ [^/]\.php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    unix:/run/php/php8.0-fpm-domain.tld.sock;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
            include     /home/user/conf/web/domain.tld/nginx.fastcgi_cache.conf*;     
        }
    }

    location /error/ {
        alias   /home/user/web/domain.tld/document_errors/;
    }

    location ~ /\.(?!well-known\/) { 
       deny all; 
       return 404;
    }

    location /vstats/ {
        alias   /home/user/web/domain.tld/stats/;
        include /home/user/web/domain.tld/stats/auth.conf*;
    }

    include     /etc/nginx/conf.d/phpmyadmin.inc*;
    include     /etc/nginx/conf.d/phppgadmin.inc*;
    include     /home/user/conf/web/domain.tld/nginx.conf_*;
}

You don’t include this config file in vhost config your domain

according to this guide.
i renamed it as nginx.ssl.conf_fla

I just want to create a separate template for Nginx so that other users don’t face such issue, but unable to fix issues with url rewriting …

most likely it complains because your custom file that gets included has a location / block, which already exists in the standard conf already and makes it double.
you cannot have the same location defined twice if I remember correctly…

1 Like

while searching for solution, i found this GitHub - e404/htaccess-for-nginx: .htaccess for nginx enables the nginx high performance webserver to deal with .htaccess files.

tried to make it work… still no luck

please check if this work or not.

no idea. if you need a .htaccess simply use apache behind nginx and be done :man_shrugging:

as said above, the problem in your custom nginx config most likely is redefining the location / block. remove that or comment it out and try again.

Thanks…

actually it’s not for production or something… I’m taking it as challenge for myself and I’ll try my best to make it happen… InshaAllah

that’s the right approach. I wouldn’t jump to that external ‘htaccess emulation’ thingy though, but rather stick to doing it manually within the right scope of the config, like you are already working on.
and I think you are close already. it’s just some more fiddling with that nginx conf… :wink:

I’m able to make Flarum (Forum Software) work with nginX + PHP-FPM …

just created New Templates to make it work.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.