***Vhost*** Ghost CMS Vhost for Cloudpanel (Only for cloudpanel)

proxy_cache_path /tmp/nginx_ghost levels=1:2 keys_zone=ghostcache:600m max_size=100m inactive=24h;
server {
  listen 80;
  listen [::]:80;
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  {{ssl_certificate_key}}
  {{ssl_certificate}}
  server_name yourdomain.com;
  {{root}}

  {{nginx_access_log}}
  {{nginx_error_log}}

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

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

  {{settings}}

  index index.html;

  location / {
    proxy_pass http://127.0.0.1:6081/;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    # Remove cookies which are useless for anonymous visitor and prevent caching
    proxy_ignore_headers Set-Cookie Cache-Control;
    proxy_hide_header Set-Cookie;
    # Add header for cache status (miss or hit)
    add_header X-Cache-Status $upstream_cache_status;
    proxy_cache ghostcache;
    # Default TTL: 1 day
    proxy_cache_valid 1d;
    # Cache 404 pages for 1h
    proxy_cache_valid 404 1h;
    # use conditional GET requests to refresh the content from origin servers
    proxy_cache_revalidate on;
    proxy_buffering on;
    # Allows starting a background subrequest to update an expired cache item,
    # while a stale cached response is returned to the client.
    proxy_cache_background_update on;
    # Bypass cache for errors
    proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
    proxy_pass_request_headers on;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout 900;
    proxy_send_timeout 900;
    proxy_read_timeout 900;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    proxy_temp_file_write_size 256k;
  }
  
# No cache + keep cookies for admin and previews
  location ~ ^/(ghost/|p/) {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_pass http://127.0.0.1:{{app_port}};
  }
  
# No cache + keep cookies for members and previews
  location ~ ^/members/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_pass http://127.0.0.1:{{app_port}};
  }

# Bypass ghost for static assets
  location ^~ /assets/ {
    root /home/yourfolder/htdocs/yourdomain.com/content/themes/krabi;
  }

# Bypass ghost for original images but not resized ones
  location ^~ /content/images/(!size) {
    root /home/yourfolder/htdocs/yourdomain.com;
  }  

}