Issues with images and some pages – NGINX

I had to move to servers. Got a VPS using CloudPanel. It uses NGINX.

Non of the images show up on the frontend, nor within the panel. Also the blog posts (collections etc) do work, however ‘pages’ do not.

I’ve followed the Cookbook about NGINX, but nothing seems to be working.

I’m completely confused.

CloudPanel spits out a default vHost file (below) I can edit the file and have tried to remove a few things, but it breaks the whole site is I mess with it to much.

I’ve also checked other posts about this, but I’m at a loss now.

On a side note, I have removed the media and cache folders when I uploaded. Locally everything works perfectly, but that’s on an Apache using MAMP.

Any help would be really appreciated.

Cheers!

server {
  listen 80;
  listen [::]:80;
  listen 443 quic;
  listen 443 ssl;
  listen [::]:443 quic;
  listen [::]:443 ssl;
  http2 on;
  http3 off;
  {{ssl_certificate_key}}
  {{ssl_certificate}}
  server_name www.kiakamgar.com;
  return 301 https://kiakamgar.com$request_uri;
}

server {
  listen 80;
  listen [::]:80;
  listen 443 quic;
  listen 443 ssl;
  listen [::]:443 quic;
  listen [::]:443 ssl;
  http2 on;
  http3 off;
  {{ssl_certificate_key}}
  {{ssl_certificate}}
  server_name kiakamgar.com www1.kiakamgar.com;
  {{root}}

  {{nginx_access_log}}
  {{nginx_error_log}}

  if ($scheme != "https") {
    rewrite ^ https://$host$request_uri permanent;
  }

  location ~ /.well-known {
    auth_basic off;
    allow all;
  }

  {{settings}}

  location / {
    {{varnish_proxy_pass}}
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_hide_header X-Varnish;
    proxy_redirect off;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout      720;
    proxy_send_timeout         720;
    proxy_read_timeout         720;
    proxy_buffer_size          128k;
    proxy_buffers              4 256k;
    proxy_busy_buffers_size    256k;
    proxy_temp_file_write_size 256k;
  }

  location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map|mjs)$ {
    add_header Access-Control-Allow-Origin "*";
    add_header alt-svc 'h3=":443"; ma=86400';
    expires max;
    access_log off;
  }

  location ~ /\.(ht|svn|git) {
    deny all;
  }

  if (-f $request_filename) {
    break;
  }
}

server {
  listen 8080;
  listen [::]:8080;
  server_name kiakamgar.com www1.kiakamgar.com;
  {{root}}

  include /etc/nginx/global_settings;

  try_files $uri $uri/ /index.php?$args;
  index index.php index.html;

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_intercept_errors on;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    try_files $uri =404;
    fastcgi_read_timeout 3600;
    fastcgi_send_timeout 3600;
    fastcgi_param HTTPS "on";
    fastcgi_param SERVER_PORT 443;
    fastcgi_pass 127.0.0.1:{{php_fpm_port}};
    fastcgi_param PHP_VALUE "{{php_settings}}";
  }

  if (-f $request_filename) {
    break;
  }
}

My mistake on the pages not showing. It was a ‘divert’ issues, now fixed.

I now only have issues with none of the images showing up.

I’m not using any caching on the server, disabled it via the config file…

'cache' => [
      'pages' => [
        'active' => false,
        'ignore' => fn ($page) => $page->title()->value() === 'Do not cache me'
      ]
    ],

…and have removed this from the vHost file…

location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map|mjs)$ {
    add_header Access-Control-Allow-Origin "*";
    add_header alt-svc 'h3=":443"; ma=86400';
    expires max;
    access_log off;
  }

Cheers!

I dont have any expience running kirby in production on an NGINX server, but i do develop locally using Laravel Herd which does use Nginx, without any issues and not having to set anything on the Kirby side to get everything going. You could maybe switch locally from MAMP to Laravel Herd and poke around in the Herd config files to see how they have set things up in terms of the Nginx configs.

It feels wrong to me that you have to mod stuff. When you say images are not working - whats going on in media folder? do you .jobs files that are incomplete? what image driver are you using..imagemagick or GD? I use Apache in productio where the default is GD, but im guessing that is also the case on Nginix.

1 Like

The strange thing is that the images in the media folder are being generated, but are not showing.

If I open the direct URL to the image they also don’t show up.

But if I move that image to another folder to another folder like media/posts/ it will actually show up when I use the direct URL. :exploding_head:

So now I’m even more confused.

Ok it’s all working now.

I rebuilt the VPS, due to anther unrelated issue, and everything is now working.

Quick FYI for others who may face this issue…

After the rebuild and install of all apps/services it seems Kirby doesn’t need to update the Vhost file as it seems everything is working out of the box.

Current system…

Kirby 5.3.1
CloudPanel 2.5.3