103 lines
3.5 KiB
Nginx Configuration File
103 lines
3.5 KiB
Nginx Configuration File
server {
|
|
listen 80;
|
|
server_name _;
|
|
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
# Public menu site assets (Next.js)
|
|
location ^~ /_next/ {
|
|
proxy_pass https://dmenu.danakcorp.com/_next/;
|
|
proxy_ssl_server_name on;
|
|
proxy_set_header Host dmenu.danakcorp.com;
|
|
proxy_hide_header X-Frame-Options;
|
|
proxy_hide_header Content-Security-Policy;
|
|
}
|
|
|
|
location ^~ /icons/ {
|
|
proxy_pass https://dmenu.danakcorp.com/icons/;
|
|
proxy_ssl_server_name on;
|
|
proxy_set_header Host dmenu.danakcorp.com;
|
|
proxy_hide_header X-Frame-Options;
|
|
proxy_hide_header Content-Security-Policy;
|
|
}
|
|
|
|
location ^~ /assets/fonts/ {
|
|
proxy_pass https://dmenu.danakcorp.com/assets/fonts/;
|
|
proxy_ssl_server_name on;
|
|
proxy_set_header Host dmenu.danakcorp.com;
|
|
proxy_hide_header X-Frame-Options;
|
|
proxy_hide_header Content-Security-Policy;
|
|
}
|
|
|
|
location ^~ /assets/images/ {
|
|
proxy_pass https://dmenu.danakcorp.com/assets/images/;
|
|
proxy_ssl_server_name on;
|
|
proxy_set_header Host dmenu.danakcorp.com;
|
|
proxy_hide_header X-Frame-Options;
|
|
proxy_hide_header Content-Security-Policy;
|
|
}
|
|
|
|
# Vite build outputs to /assets by default
|
|
location ^~ /assets/ {
|
|
expires 1y;
|
|
add_header Cache-Control "public, immutable";
|
|
try_files $uri =404;
|
|
}
|
|
|
|
# Admin SPA routes
|
|
location ^~ /auth/ {
|
|
try_files $uri $uri/ /index.html;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
}
|
|
|
|
location = /dashboard {
|
|
try_files $uri /index.html;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
}
|
|
|
|
location = /setting {
|
|
try_files $uri /index.html;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
}
|
|
|
|
location = /statistics {
|
|
try_files $uri /index.html;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
}
|
|
|
|
location ~ ^/(foods|orders|customers|schedule|payment_methods|discounts|announcements|reports|comments|roles|admins|shipment_methods|coupons|reviews|pagers|notifications)/ {
|
|
try_files $uri $uri/ /index.html;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
}
|
|
|
|
# Restaurant menu preview (same-origin iframe; strips X-Frame-Options from upstream)
|
|
location ~ ^/(?!auth|dashboard|setting|statistics|foods|orders|customers|schedule|payment_methods|discounts|announcements|reports|comments|roles|admins|shipment_methods|coupons|reviews|pagers|notifications|assets|icons|_next)([a-zA-Z0-9][a-zA-Z0-9_-]*)(/.*)?$ {
|
|
proxy_pass https://dmenu.danakcorp.com/$1$2$is_args$args;
|
|
proxy_ssl_server_name on;
|
|
proxy_set_header Host dmenu.danakcorp.com;
|
|
proxy_hide_header X-Frame-Options;
|
|
proxy_hide_header Content-Security-Policy;
|
|
proxy_hide_header Cache-Control;
|
|
proxy_hide_header ETag;
|
|
proxy_hide_header Last-Modified;
|
|
proxy_hide_header Expires;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate" always;
|
|
add_header Pragma "no-cache" always;
|
|
add_header Expires "0" always;
|
|
}
|
|
|
|
# SPA fallback
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
}
|
|
|
|
# optional: favicon (avoid noisy logs if missing)
|
|
location = /favicon.ico {
|
|
try_files $uri =204;
|
|
access_log off;
|
|
log_not_found off;
|
|
}
|
|
}
|