Last active
January 31, 2025 23:57
NGINX Config - Content-Security-Policy (Google, Google Fonts, Facebook, Zendesk, MaxCDN-FontAwesome, CKEditor), Cache, Mime-Types, Puma
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/nginx/mime.types | |
types { | |
font/ttf ttf; | |
font/opentype otf; | |
text/html html htm shtml; | |
text/css css; | |
text/xml xml; | |
image/gif gif; | |
image/jpeg jpeg jpg; | |
application/javascript js; | |
application/atom+xml atom; | |
application/rss+xml rss; | |
text/mathml mml; | |
text/plain txt; | |
text/vnd.sun.j2me.app-descriptor jad; | |
text/vnd.wap.wml wml; | |
text/x-component htc; | |
image/png png; | |
image/tiff tif tiff; | |
image/vnd.wap.wbmp wbmp; | |
image/x-icon ico; | |
image/x-jng jng; | |
image/x-ms-bmp bmp; | |
image/svg+xml svg svgz; | |
image/webp webp; | |
application/font-woff woff; | |
application/font-woff2 woff2; | |
application/java-archive jar war ear; | |
application/json json; | |
application/mac-binhex40 hqx; | |
application/msword doc; | |
application/pdf pdf; | |
application/postscript ps eps ai; | |
application/rtf rtf; | |
application/vnd.apple.mpegurl m3u8; | |
application/vnd.ms-excel xls; | |
application/vnd.ms-fontobject eot; | |
application/vnd.ms-powerpoint ppt; | |
application/vnd.wap.wmlc wmlc; | |
application/vnd.google-earth.kml+xml kml; | |
application/vnd.google-earth.kmz kmz; | |
application/x-7z-compressed 7z; | |
application/x-cocoa cco; | |
application/x-java-archive-diff jardiff; | |
application/x-java-jnlp-file jnlp; | |
application/x-makeself run; | |
application/x-perl pl pm; | |
application/x-pilot prc pdb; | |
application/x-rar-compressed rar; | |
application/x-redhat-package-manager rpm; | |
application/x-sea sea; | |
application/x-shockwave-flash swf; | |
application/x-stuffit sit; | |
application/x-tcl tcl tk; | |
application/x-x509-ca-cert der pem crt; | |
application/x-xpinstall xpi; | |
application/xhtml+xml xhtml; | |
application/xspf+xml xspf; | |
application/zip zip; | |
application/octet-stream bin exe dll; | |
application/octet-stream deb; | |
application/octet-stream dmg; | |
application/octet-stream iso img; | |
application/octet-stream msi msp msm; | |
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx; | |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx; | |
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx; | |
audio/midi mid midi kar; | |
audio/mpeg mp3; | |
audio/ogg ogg; | |
audio/x-m4a m4a; | |
audio/x-realaudio ra; | |
video/3gpp 3gpp 3gp; | |
video/mp2t ts; | |
video/mp4 mp4; | |
video/mpeg mpeg mpg; | |
video/quicktime mov; | |
video/webm webm; | |
video/x-flv flv; | |
video/x-m4v m4v; | |
video/x-mng mng; | |
video/x-ms-asf asx asf; | |
video/x-ms-wmv wmv; | |
video/x-msvideo avi; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/nginx/nginx.conf | |
user www-data; | |
worker_processes auto; | |
worker_rlimit_nofile 100000; | |
pid /run/nginx.pid; | |
events { | |
worker_connections 4000; | |
# multi_accept on; | |
} | |
http { | |
## | |
# Basic Settings | |
## | |
sendfile on; | |
tcp_nopush on; | |
tcp_nodelay on; | |
keepalive_timeout 65; | |
types_hash_max_size 2048; | |
client_max_body_size 10M; | |
client_body_buffer_size 128k; | |
client_body_timeout 12; | |
client_header_timeout 12; | |
send_timeout 10; | |
## | |
# Security | |
## | |
server_tokens off; | |
add_header Access-Control-Allow-Origin '*'; | |
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; | |
add_header X-Frame-Options SAMEORIGIN; | |
add_header X-Content-Type-Options nosniff; | |
# Warning always show on Google Chrome... i don't know how fix it. | |
# add_header X-XSS-Protection "1; mode=block"; | |
# Google, facebook, zendesk, font-awesome etc. | |
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net cdn.ckeditor.com; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com cdn.ckeditor.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://assets.zendesk.com maxcdn.bootstrapcdn.com cdn.ckeditor.com; font-src 'self' https://themes.googleusercontent.com maxcdn.bootstrapcdn.com; frame-src https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'"; | |
# server_names_hash_bucket_size 64; | |
# server_name_in_redirect off; | |
include /etc/nginx/mime.types; | |
default_type application/octet-stream; | |
## | |
# SSL Settings | |
## | |
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE | |
ssl_prefer_server_ciphers on; | |
## | |
# Logging Settings | |
## | |
# Uncomment if necessary | |
# access_log /var/log/nginx/access.log; | |
# error_log /var/log/nginx/error.log; | |
access_log off; | |
## | |
# Gzip Settings | |
## | |
gzip on; | |
gzip_disable "msie6"; | |
gzip_vary on; | |
gzip_min_length 10240; | |
gzip_proxied expired no-cache no-store private auth; | |
gzip_comp_level 6; | |
gzip_buffers 16 8k; | |
gzip_http_version 1.1; | |
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript text/x-js font/ttf font/opentype application/vnd.ms-fontobject image/svg+xml; | |
## | |
# Virtual Host Configs | |
## | |
include /etc/nginx/conf.d/*.conf; | |
include /etc/nginx/sites-enabled/*; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/nginx/sites-enabled/patolino.conf | |
# patolino (fake name) | |
upstream patolino_puma { | |
# did you create the deploy user? | |
server unix:///home/deploy/apps/patolino/shared/tmp/sockets/puma.sock fail_timeout=0; | |
} | |
server { | |
listen 80; | |
server_name patolino.com www.patolino.com; | |
root /home/deploy/apps/patolino/current/public/; | |
location / { | |
try_files $uri $uri/index.html $uri.html @app; | |
} | |
# For nginx status | |
location /basic_status { | |
stub_status; | |
} | |
# Cache | |
location ~* \.(?:jpg|jpeg|gif|png|ico|xml)$ { | |
access_log off; | |
log_not_found off; | |
expires 30m; | |
add_header Cache-Control "public"; | |
} | |
location ~* \.(?:css|js)$ { | |
access_log off; | |
log_not_found off; | |
add_header Cache-Control "no-cache, public, must-revalidate, proxy-revalidate"; | |
} | |
location ~* \.(eot|otf|ttf|woff|woff2|svg|oft)$ { | |
access_log off; | |
log_not_found off; | |
add_header Access-Control-Allow-Origin *; | |
add_header Cache-Control "public"; | |
expires 5m; | |
} | |
# Do you use SidekiqUI? (config below prevents some errors) | |
# 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 Host $http_host; | |
# Application | |
location @app { | |
# must match the name of upstream directive which is defined above | |
proxy_buffers 8 24k; | |
proxy_buffer_size 2k; | |
proxy_pass http://patolino_puma; | |
proxy_redirect off; | |
proxy_set_header X-Forwarded-For $remote_addr; | |
proxy_set_header Host $http_host; | |
# below line is only required for HTTPS | |
# proxy_set_header X-Forwarded-Proto https; | |
} | |
# deny access to .htaccess files, if Apache's document root | |
# concurs with nginx's one | |
location ~ /\.ht { | |
deny all; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment