RSS Git Download  Clone
Raw Blame History
server {
  listen 80 default;

  root /application/public;
  access_log /var/log/nginx/access.log;
  resolver 127.0.0.11 ipv6=off;
  set $fpm_backend php-fpm;

  location / {
    try_files $uri /index.php$is_args$args;
  }

  location ~* ^[^(\.php)]+\.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ {
    access_log off;
    expires 1h;
    add_header Cache-Control public;
  }

  location ~ ^/index\.php(/|$) {
    fastcgi_pass $fpm_backend:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;

    fastcgi_intercept_errors on;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    send_timeout 300;

    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;

    include fastcgi_params;
  }

  # Basic configuration
  expires off;
  server_tokens off;
  client_max_body_size 4m;
  keepalive_timeout 20s;
  sendfile on;
  tcp_nopush on;

  # Security
  add_header X-Frame-Options "SAMEORIGIN" always;
  add_header X-XSS-Protection "1; mode=block" always;
  add_header X-Content-Type-Options nosniff always;
  add_header Referrer-Policy "no-referrer-when-downgrade" always;

  # Performance
  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/geo+json
    application/vnd.ms-fontobject
    application/x-web-app-manifest+json
    application/xhtml+xml
    application/xml
    application/rdf+xml
    font/otf
    application/wasm
    image/bmp
    image/svg+xml
    text/cache-manifest
    text/css
    text/javascript
    text/plain
    text/markdown
    text/vcard
    text/calendar
    text/vnd.rim.location.xloc
    text/vtt
    text/x-component
    text/x-cross-domain-policy;

  # Content types
  include mime.types;
  charset utf-8;
  charset_types
    text/css
    text/plain
    text/vnd.wap.wml
    text/javascript
    text/markdown
    text/calendar
    text/x-component
    text/vcard
    text/cache-manifest
    text/vtt
    application/json
    application/manifest+json;
}