# proxy_host

created_on: 2025-09-17 09:56:57
modified_on: 2025-09-17 12:02:21
domain_names: ["np-dms.work","www.np-dms.work"]
forward_host: dms_landing
meta: {"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null}
forward_scheme: http
locations: []
advanced_config:
  add_header X-Content-Type-Options nosniff always;
  add_header X-Frame-Options SAMEORIGIN always;
  add_header Referrer-Policy "no-referrer-when-downgrade" always;


created_on: 2025-09-17 10:08:52
modified_on: 2025-09-17 10:24:21
domain_names: ["lcbp3.np-dms.work"]
forward_host: frontend
forward_scheme: https
advanced_config:
  proxy_pass http://dms_frontend;
  proxy_http_version 1.1;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection $connection_upgrade;
  proxy_buffering off;
  proxy_read_timeout 300s;
  proxy_send_timeout 300s;
  proxy_redirect off;

meta:
  {"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"proxy_pass\" directive is not allowed here in /data/nginx/proxy_host/2.conf:54\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"}

locations:
  [{"path":"/","advanced_config":"","forward_scheme":"https","forward_host":"192.168.20.248","forward_port":3000}]


created_on: 2025-09-17 10:30:42
modified_on: 2025-10-02 16:39:35
domain_names: ["lcbp3.np-dms.work"]
forward_host: dms_frontend
forward_scheme: http
advanced_config:
  # ========================================
  # [Advanced Proxy Host] - ตั้งค่าระดับ Host
  # ========================================

  # ===== ขนาดไฟล์/timeout =====
  client_max_body_size 200m;
  client_body_timeout  60s;
  send_timeout         60s;

  # ===== นิยามตัวแปรสำหรับ WebSocket =====
  map $http_upgrade $connection_upgrade {
      default upgrade;
      ''      close;
  }

  # ===== Proxy headers พื้นฐาน =====
  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 $scheme;

  # ===== WebSocket/SSE =====
  proxy_set_header Upgrade    $http_upgrade;
  proxy_set_header Connection $connection_upgrade;
  proxy_read_timeout 300s;
  proxy_send_timeout 300s;
  proxy_redirect off;

  # ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====
  # proxy_pass_header Set-Cookie;

  # ===== Security headers =====
  add_header X-Content-Type-Options nosniff always;
  add_header X-Frame-Options SAMEORIGIN always;
  add_header Referrer-Policy "no-referrer-when-downgrade" always;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

meta:
  {"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"map\" directive is not allowed here in /data/nginx/proxy_host/3.conf:73\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"}

locations:
  [{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}]


created_on: 2025-09-17 15:09:35
modified_on: 2025-09-21 10:46:42
domain_names: ["lcbp3c2.myqnapcloud.com"]
forward_host: 127.0.0.1
meta: {"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null}
forward_scheme: http
locations:
  [{"path":"/","advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\nlocation = / {\n    return 302 /landing/;\n}\n\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\nlocation ^~ /landing/ {\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\n    index index.html;\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\n}\n\n# 3) gzip (ทางเลือก)\ngzip on;\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\n","forward_scheme":"http","forward_host":"127.0.0.1","forward_port":8443}]


created_on: 2025-09-18 16:49:50
modified_on: 2025-09-21 10:31:00
domain_names: ["git.np-dms.work"]
forward_host: gitea
meta: {"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null}
forward_scheme: http
locations: []
advanced_config:
  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 $scheme;
  proxy_set_header Authorization $http_authorization;

  proxy_connect_timeout 30s;
  proxy_send_timeout 300s;
  proxy_read_timeout 300s;
  send_timeout 300s;
  client_max_body_size 512m;


created_on: 2025-09-19 14:14:45
modified_on: 2025-10-02 16:17:00
domain_names: ["pma.np-dms.work"]
forward_host: phpmyadmin
meta: {"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null}
forward_scheme: http
locations: []
advanced_config:
  client_max_body_size 128m;

  add_header X-Frame-Options "SAMEORIGIN" always;
  add_header X-Content-Type-Options "nosniff" always;
  add_header Referrer-Policy "strict-origin-when-cross-origin" always;
  add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Real-IP $remote_addr;

  proxy_buffering off;


created_on: 2025-10-02 16:43:15
modified_on: 2025-10-02 16:58:39
domain_names: ["lcbp3.np-dms.work"]
forward_host: dms_frontend
meta: {"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null}
forward_scheme: http
advanced_config:
  # ===== ขนาดไฟล์/timeout ระดับ Host =====
  client_max_body_size 200m;
  client_body_timeout  60s;
  send_timeout         60s;

  # ===== Proxy headers พื้นฐาน (ส่งให้ backend ทุกตัว) =====
  # ที่นี่จะเป็นที่กำหนด header หลักเพียงแห่งเดียว
  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 $scheme;

  # ===== WebSocket/SSE header ระดับ Host =====
  # พร้อมสำหรับทุก location ที่อาจต้องใช้ WebSocket
  proxy_set_header Upgrade           $http_upgrade;
  proxy_set_header Connection        "upgrade"; # ใช้ "upgrade" โดยตรงจะเสถียรกว่า

  # ===== สำคัญสำหรับคุกกี้ HttpOnly (ให้ทุก backend) =====
  proxy_pass_header Set-Cookie;

  # ===== Security headers ระดับ Host (ยอดเยี่ยมมากครับ) =====
  add_header X-Content-Type-Options "nosniff" always;
  add_header X-Frame-Options "SAMEORIGIN" always;
  add_header Referrer-Policy "no-referrer-when-downgrade" always;
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

locations:
  [{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;\n","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}]


created_on: 2025-10-02 16:52:08
modified_on: 2025-10-02 16:52:26
domain_names: ["npm.np-dms.work"]
forward_host: npm
forward_scheme: http
locations: []
meta:
  {"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"nginx_online":true,"nginx_err":null}


# certificate

created_on: 2025-09-17 11:08:48
modified_on: 2025-09-17 11:08:59
provider: letsencrypt
nice_name: np-dms.work, www.np-dms.work
domain_names: ["np-dms.work","www.np-dms.work"]
expires_on: 2025-12-16 03:10:25
meta:
  {"letsencrypt_agree":true,"dns_challenge":false,"nginx_online":true,"nginx_err":null,"letsencrypt_email":"center.pslcp3@gmail.com"}


created_on: 2025-09-17 11:15:57
modified_on: 2025-09-17 11:21:01
provider: letsencrypt
nice_name: lcbp3.np-dms.work
domain_names: ["lcbp3.np-dms.work"]
expires_on: 2025-12-16 03:17:34
meta:
  {"letsencrypt_agree":true,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] unknown directive \"```nginx\n#\" in /data/nginx/proxy_host/3.conf:88\nnginx: configuration file /etc/nginx/nginx.conf test failed\n","letsencrypt_email":"center.pslcp3@gmail.com"}


created_on: 2025-09-17 13:46:14
modified_on: 2025-09-17 13:49:07
provider: letsencrypt
nice_name: lcbp3.np-dms.work
domain_names: ["lcbp3.np-dms.work"]
expires_on: 2025-12-16 05:47:51
meta:
  {"letsencrypt_agree":true,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"proxy_http_version\" directive is duplicate in /data/nginx/proxy_host/3.conf:116\nnginx: configuration file /etc/nginx/nginx.conf test failed\n","letsencrypt_email":"center.pslcp3@gmail.com"}


# audit_log

created_on: 2025-09-17 09:52:39
modified_on: 2025-09-17 09:52:39
object_type: user
action: updated
meta:
  {"name":"Nattanin Peancharoen","nickname":"center","email":"peancharoen.pslcp3@gmail.com","roles":["admin"],"is_disabled":0,"id":1,"avatar":"//www.gravatar.com/avatar/359ab189ab83534aa79972668f5b3ff5?default=mm"}


created_on: 2025-09-17 09:57:19
modified_on: 2025-09-17 09:57:19
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["lcbp3.np-dms.work","np-dms.work","www.np-dms.work"],"meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"letsencrypt_certificate":{"cn":"lcbp3.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E7","dates":{"from":1758049125,"to":1765825124}}},"owner_user_id":1,"nice_name":"lcbp3.np-dms.work, np-dms.work, www.np-dms.work"}


created_on: 2025-09-17 09:57:19
modified_on: 2025-09-17 09:57:19
object_type: proxy-host
action: updated
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 09:56:57","owner_user_id":1,"domain_names":["lcbp3.np-dms.work","np-dms.work","www.np-dms.work"],"forward_host":"landing","forward_port":80,"access_list_id":0,"certificate_id":1,"ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"add_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 09:57:20
modified_on: 2025-09-17 09:57:20
object_type: proxy-host
action: created
meta:
  {"domain_names":["lcbp3.np-dms.work","np-dms.work","www.np-dms.work"],"forward_scheme":"http","forward_host":"landing","forward_port":80,"access_list_id":0,"ssl_forced":false,"meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"advanced_config":"add_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","locations":[],"block_exploits":false,"caching_enabled":false,"allow_websocket_upgrade":false,"http2_support":false,"hsts_enabled":false,"hsts_subdomains":false,"owner_user_id":1}


created_on: 2025-09-17 10:02:02
modified_on: 2025-09-17 10:02:02
object_type: proxy-host
action: updated
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 09:57:20","owner_user_id":1,"domain_names":["np-dms.work","www.np-dms.work"],"forward_host":"landing","forward_port":80,"access_list_id":0,"certificate_id":"1","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"add_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 10:08:52
modified_on: 2025-09-17 10:08:52
object_type: proxy-host
action: created
meta:
  {"forward_scheme":"https","forward_host":"frontend","forward_port":3000,"advanced_config":"","domain_names":["lcbp3.np-dms.work"],"allow_websocket_upgrade":true,"access_list_id":0,"certificate_id":"1","meta":{"letsencrypt_agree":false,"dns_challenge":false},"locations":[{"path":"/","advanced_config":"","forward_scheme":"https","forward_host":"192.168.20.248","forward_port":3000}],"block_exploits":false,"caching_enabled":false,"http2_support":false,"hsts_enabled":false,"hsts_subdomains":false,"ssl_forced":false,"owner_user_id":1}


created_on: 2025-09-17 10:14:12
modified_on: 2025-09-17 10:14:12
object_type: proxy-host
action: updated
meta:
  {"id":2,"created_on":"2025-09-17 10:08:52","modified_on":"2025-09-17 10:08:52","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"frontend","forward_port":3000,"access_list_id":0,"certificate_id":"1","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"proxy_pass http://dms_frontend;\r\nproxy_http_version 1.1;\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Forwarded-Host $host;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_buffering off;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[{"path":"/","advanced_config":"","forward_scheme":"https","forward_host":"192.168.20.248","forward_port":3000}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 10:24:22
modified_on: 2025-09-17 10:24:22
object_type: proxy-host
action: deleted
meta:
  {"id":2,"created_on":"2025-09-17 10:08:52","modified_on":"2025-09-17 10:14:12","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"frontend","forward_port":3000,"access_list_id":0,"certificate_id":1,"ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"proxy_pass http://dms_frontend;\r\nproxy_http_version 1.1;\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Forwarded-Host $host;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_buffering off;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"proxy_pass\" directive is not allowed here in /data/nginx/proxy_host/2.conf:54\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[{"path":"/","advanced_config":"","forward_scheme":"https","forward_host":"192.168.20.248","forward_port":3000}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 10:30:42
modified_on: 2025-09-17 10:30:42
object_type: proxy-host
action: created
meta:
  {"forward_scheme":"http","forward_host":"192.168.20.248","forward_port":3000,"advanced_config":"```nginx\\n# Rate-limit เฉพาะ /api\\nlimit_req zone=api_zone burst=40 nodelay;\\n\\nproxy_set_header X-Real-IP $remote_addr;\\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\nproxy_set_header X-Forwarded-Proto https;\\n\\nproxy_read_timeout 300s;\\nproxy_send_timeout 300s;\\nproxy_redirect off;\\n\\n# --- CORS ---\\nset $cors_allow_origin \"\";\\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?","domain_names":["lcbp3.np-dms.work"],"allow_websocket_upgrade":true,"access_list_id":0,"certificate_id":"1","meta":{"letsencrypt_agree":false,"dns_challenge":false},"locations":[{"path":"/api/","advanced_config":"","forward_scheme":"http","forward_host":"backend","forward_port":3001}],"block_exploits":false,"caching_enabled":false,"http2_support":false,"hsts_enabled":false,"hsts_subdomains":false,"ssl_forced":false,"owner_user_id":1}


created_on: 2025-09-17 10:36:51
modified_on: 2025-09-17 10:36:51
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 10:30:42","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"192.168.20.248","forward_port":3000,"access_list_id":0,"certificate_id":"1","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/api/","advanced_config":"```nginx\\n# Rate-limit เฉพาะ /api\\nlimit_req zone=api_zone burst=40 nodelay;\\n\\nproxy_set_header X-Real-IP $remote_addr;\\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\nproxy_set_header X-Forwarded-Proto https;\\n\\nproxy_read_timeout 300s;\\nproxy_send_timeout 300s;\\nproxy_redirect off;\\n\\n# --- CORS ---\\nset $cors_allow_origin \"\";\\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?","forward_scheme":"http","forward_host":"backend","forward_port":3001},{"path":"/pma/","advanced_config":"nginx\\nproxy_set_header X-Forwarded-Host $host;\\nproxy_set_header X-Forwarded-Proto https;\\nproxy_set_header X-Forwarded-Prefix /pma;\\n\\nproxy_read_timeout 300s;\\nproxy_send_timeout 300s;\\nproxy_redirect off;\\n","forward_scheme":"http","forward_host":"phpmyadmin","forward_port":80},{"path":"/n8n/","advanced_config":"```nginx\\nproxy_set_header X-Forwarded-Host $host;\\nproxy_set_header X-Forwarded-Proto https;\\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\nproxy_set_header X-Forwarded-Prefix /n8n;\\n\\nproxy_set_header Upgrade $http_upgrade;\\nproxy_set_header Connection \"upgrade\";\\n\\nproxy_read_timeout 86400s;\\nproxy_send_timeout 86400s;\\nproxy_redirect off;\\n\\n# --- CORS ---\\nset $cors_allow_origin \"\";\\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?","forward_scheme":"http","forward_host":"n8n","forward_port":5678},{"path":"/pgadmin/","advanced_config":"nginx\\nproxy_set_header X-Script-Name /pgadmin;\\nproxy_set_header X-Forwarded-Prefix /pgadmin;\\nproxy_set_header X-Forwarded-Host $host;\\nproxy_set_header X-Forwarded-Proto https;\\n\\nproxy_read_timeout 300s;\\nproxy_send_timeout 300s;\\nproxy_redirect off;\\n","forward_scheme":"http","forward_host":"pgadmin","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 10:41:03
modified_on: 2025-09-17 10:41:03
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 10:36:51","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"192.168.20.248","forward_port":3000,"access_list_id":0,"certificate_id":"1","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"client_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\nproxy_set_header Upgrade            $http_upgrade;\r\nproxy_set_header Connection         $connection_upgrade;\r\nlocation = /n8n {\r\n  return 301 /n8n/;\r\n}\r\nlocation = /pgadmin {\r\n  return 301 /pgadmin/;\r\n}\r\nlocation = /health {\r\n  proxy_pass http://frontend:3000/health;\r\n  proxy_http_version 1.1;\r\n  proxy_set_header Host                $host;\r\n  proxy_set_header X-Forwarded-For     $proxy_add_x_forwarded_for;\r\n  proxy_set_header X-Forwarded-Proto   https;\r\n  proxy_read_timeout 15s;\r\n  proxy_send_timeout 15s;\r\n}\r\nlocation ^~ /_next/static/ {\r\n  proxy_pass http://frontend:3000;\r\n  proxy_http_version 1.1;\r\n  proxy_set_header Host $host;\r\n  # cache 1 ปี + immutable\r\n  add_header Cache-Control \"public, max-age=31536000, immutable\";\r\n}\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/api/","advanced_config":"```nginx\\n# Rate-limit เฉพาะ /api\\nlimit_req zone=api_zone burst=40 nodelay;\\n\\nproxy_set_header X-Real-IP $remote_addr;\\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\nproxy_set_header X-Forwarded-Proto https;\\n\\nproxy_read_timeout 300s;\\nproxy_send_timeout 300s;\\nproxy_redirect off;\\n\\n# --- CORS ---\\nset $cors_allow_origin \"\";\\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?","forward_scheme":"http","forward_host":"backend","forward_port":3001},{"path":"/pma/","advanced_config":"nginx\\nproxy_set_header X-Forwarded-Host $host;\\nproxy_set_header X-Forwarded-Proto https;\\nproxy_set_header X-Forwarded-Prefix /pma;\\n\\nproxy_read_timeout 300s;\\nproxy_send_timeout 300s;\\nproxy_redirect off;\\n","forward_scheme":"http","forward_host":"phpmyadmin","forward_port":80},{"path":"/n8n/","advanced_config":"```nginx\\nproxy_set_header X-Forwarded-Host $host;\\nproxy_set_header X-Forwarded-Proto https;\\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\\nproxy_set_header X-Forwarded-Prefix /n8n;\\n\\nproxy_set_header Upgrade $http_upgrade;\\nproxy_set_header Connection \"upgrade\";\\n\\nproxy_read_timeout 86400s;\\nproxy_send_timeout 86400s;\\nproxy_redirect off;\\n\\n# --- CORS ---\\nset $cors_allow_origin \"\";\\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?","forward_scheme":"http","forward_host":"n8n","forward_port":5678},{"path":"/pgadmin/","advanced_config":"nginx\\nproxy_set_header X-Script-Name /pgadmin;\\nproxy_set_header X-Forwarded-Prefix /pgadmin;\\nproxy_set_header X-Forwarded-Host $host;\\nproxy_set_header X-Forwarded-Proto https;\\n\\nproxy_read_timeout 300s;\\nproxy_send_timeout 300s;\\nproxy_redirect off;\\n","forward_scheme":"http","forward_host":"pgadmin","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:06:28
modified_on: 2025-09-17 11:06:28
object_type: certificate
action: deleted
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 09:57:19","owner_user_id":1,"provider":"letsencrypt","nice_name":"lcbp3.np-dms.work, np-dms.work, www.np-dms.work","domain_names":["lcbp3.np-dms.work","np-dms.work","www.np-dms.work"],"expires_on":"2025-12-16 01:58:44","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false}}


created_on: 2025-09-17 11:08:59
modified_on: 2025-09-17 11:08:59
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["np-dms.work","www.np-dms.work"],"meta":{"letsencrypt_agree":true,"dns_challenge":false,"nginx_online":true,"nginx_err":null,"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_certificate":{"cn":"np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E7","dates":{"from":1758053426,"to":1765829425}}},"owner_user_id":1,"nice_name":"np-dms.work, www.np-dms.work"}


created_on: 2025-09-17 11:08:59
modified_on: 2025-09-17 11:08:59
object_type: proxy-host
action: updated
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 10:02:03","owner_user_id":1,"domain_names":["np-dms.work","www.np-dms.work"],"forward_host":"landing","forward_port":80,"access_list_id":0,"certificate_id":2,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"add_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:16:08
modified_on: 2025-09-17 11:16:08
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["lcbp3.np-dms.work"],"meta":{"letsencrypt_agree":true,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] unknown directive \"```nginx\n#\" in /data/nginx/proxy_host/3.conf:88\nnginx: configuration file /etc/nginx/nginx.conf test failed\n","letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_certificate":{"cn":"lcbp3.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E7","dates":{"from":1758053855,"to":1765829854}}},"owner_user_id":1,"nice_name":"lcbp3.np-dms.work"}


created_on: 2025-09-17 11:16:08
modified_on: 2025-09-17 11:16:08
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 10:41:04","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"frontend","forward_port":3000,"access_list_id":0,"certificate_id":3,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"proxy_set_header X-Forwarded-Host   $host;\r\nproxy_set_header X-Forwarded-Proto  $scheme;\r\nproxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;\r\n# WebSocket/SSE\r\nproxy_set_header Upgrade            $http_upgrade;\r\nproxy_set_header Connection         $connection_upgrade;\r\nproxy_buffering off;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/api/","advanced_config":"# อิง logic เดิม: rate-limit เฉพาะ /api  [ref: dms.conf + nginx.conf]\nlimit_req zone=api_zone burst=40 nodelay;\n\nproxy_set_header X-Real-IP         $remote_addr;\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# CORS allowlist (เทียบ map เดิม)  [ref: dms.conf]\n# แนะนำให้ย้ายเป็นฝั่งแอพ แต่ถ้าต้องที่ proxy ก็ทำแบบนี้\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?|127\\.0\\.0\\.1(:\\d+)?|np-dms\\.work|www\\.np-dms\\.work|lcbp3\\.np-dms\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin      $cors_allow_origin always;\nadd_header Vary                             \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods     \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers     \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    return 204;\n}\n","forward_scheme":"http","forward_host":"backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_set_header X-Forwarded-Host  $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"phpmyadmin","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:17:57
modified_on: 2025-09-17 11:17:57
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["lcbp3.np-dms.work"],"meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"letsencrypt_certificate":{"cn":"lcbp3.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E7","dates":{"from":1758053963,"to":1765829962}}},"owner_user_id":1,"nice_name":"lcbp3.np-dms.work"}


created_on: 2025-09-17 11:17:57
modified_on: 2025-09-17 11:17:57
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 11:16:08","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"frontend","forward_port":3000,"access_list_id":0,"certificate_id":4,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/api/","advanced_config":"# อิง logic เดิม: rate-limit เฉพาะ /api  [ref: dms.conf + nginx.conf]\nlimit_req zone=api_zone burst=40 nodelay;\n\nproxy_set_header X-Real-IP         $remote_addr;\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# CORS allowlist (เทียบ map เดิม)  [ref: dms.conf]\n# แนะนำให้ย้ายเป็นฝั่งแอพ แต่ถ้าต้องที่ proxy ก็ทำแบบนี้\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?|127\\.0\\.0\\.1(:\\d+)?|np-dms\\.work|www\\.np-dms\\.work|lcbp3\\.np-dms\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin      $cors_allow_origin always;\nadd_header Vary                             \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods     \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers     \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    return 204;\n}\n","forward_scheme":"http","forward_host":"backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_set_header X-Forwarded-Host  $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"phpmyadmin","forward_port":80},{"path":"/","advanced_config":"proxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  $scheme;\nproxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;\n# WebSocket/SSE\nproxy_set_header Upgrade            $http_upgrade;\nproxy_set_header Connection         $connection_upgrade;\nproxy_buffering off;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"frontend","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:19:21
modified_on: 2025-09-17 11:19:21
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 11:17:57","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/api/","advanced_config":"# อิง logic เดิม: rate-limit เฉพาะ /api  [ref: dms.conf + nginx.conf]\nlimit_req zone=api_zone burst=40 nodelay;\n\nproxy_set_header X-Real-IP         $remote_addr;\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# CORS allowlist (เทียบ map เดิม)  [ref: dms.conf]\n# แนะนำให้ย้ายเป็นฝั่งแอพ แต่ถ้าต้องที่ proxy ก็ทำแบบนี้\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?|127\\.0\\.0\\.1(:\\d+)?|np-dms\\.work|www\\.np-dms\\.work|lcbp3\\.np-dms\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin      $cors_allow_origin always;\nadd_header Vary                             \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods     \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers     \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_set_header X-Forwarded-Host  $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/","advanced_config":"proxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  $scheme;\nproxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;\n# WebSocket/SSE\nproxy_set_header Upgrade            $http_upgrade;\nproxy_set_header Connection         $connection_upgrade;\nproxy_buffering off;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:20:46
modified_on: 2025-09-17 11:20:46
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 11:19:21","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/api/","advanced_config":"# อิง logic เดิม: rate-limit เฉพาะ /api  [ref: dms.conf + nginx.conf]\nlimit_req zone=api_zone burst=40 nodelay;\n\nproxy_set_header X-Real-IP         $remote_addr;\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# CORS allowlist (เทียบ map เดิม)  [ref: dms.conf]\n# แนะนำให้ย้ายเป็นฝั่งแอพ แต่ถ้าต้องที่ proxy ก็ทำแบบนี้\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?|127\\.0\\.0\\.1(:\\d+)?|np-dms\\.work|www\\.np-dms\\.work|lcbp3\\.np-dms\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin      $cors_allow_origin always;\nadd_header Vary                             \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods     \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers     \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_set_header X-Forwarded-Host  $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/","advanced_config":"proxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  $scheme;\nproxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;\n# WebSocket/SSE\nproxy_set_header Upgrade            $http_upgrade;\nproxy_set_header Connection         $connection_upgrade;\nproxy_buffering off;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:21:01
modified_on: 2025-09-17 11:21:01
object_type: certificate
action: deleted
meta:
  {"id":3,"created_on":"2025-09-17 11:15:57","modified_on":"2025-09-17 11:16:08","owner_user_id":1,"provider":"letsencrypt","nice_name":"lcbp3.np-dms.work","domain_names":["lcbp3.np-dms.work"],"expires_on":"2025-12-16 03:17:34","meta":{"letsencrypt_agree":true,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] unknown directive \"```nginx\n#\" in /data/nginx/proxy_host/3.conf:88\nnginx: configuration file /etc/nginx/nginx.conf test failed\n","letsencrypt_email":"center.pslcp3@gmail.com"}}


created_on: 2025-09-17 11:31:33
modified_on: 2025-09-17 11:31:33
object_type: proxy-host
action: updated
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 11:08:59","owner_user_id":1,"domain_names":["np-dms.work","www.np-dms.work"],"forward_host":"landing","forward_port":80,"access_list_id":0,"certificate_id":"2","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/","advanced_config":"add_header X-Content-Type-Options nosniff always;\nadd_header X-Frame-Options SAMEORIGIN always;\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","forward_scheme":"http","forward_host":"landing","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:32:09
modified_on: 2025-09-17 11:32:09
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 11:20:47","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/api/","advanced_config":"# อิง logic เดิม: rate-limit เฉพาะ /api  [ref: dms.conf + nginx.conf]\nlimit_req zone=api_zone burst=40 nodelay;\n\nproxy_set_header X-Real-IP         $remote_addr;\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# CORS allowlist (เทียบ map เดิม)  [ref: dms.conf]\n# แนะนำให้ย้ายเป็นฝั่งแอพ แต่ถ้าต้องที่ proxy ก็ทำแบบนี้\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?|127\\.0\\.0\\.1(:\\d+)?|np-dms\\.work|www\\.np-dms\\.work|lcbp3\\.np-dms\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin      $cors_allow_origin always;\nadd_header Vary                             \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods     \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers     \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    return 204;\n}\n","forward_scheme":"http","forward_host":"backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_set_header X-Forwarded-Host  $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"phpmyadmin","forward_port":80},{"path":"/","advanced_config":"proxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  $scheme;\nproxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;\n# WebSocket/SSE\nproxy_set_header Upgrade            $http_upgrade;\nproxy_set_header Connection         $connection_upgrade;\nproxy_buffering off;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"frontend","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:33:46
modified_on: 2025-09-17 11:33:46
object_type: proxy-host
action: updated
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 11:31:33","owner_user_id":1,"domain_names":["np-dms.work","www.np-dms.work"],"forward_host":"landing","forward_port":80,"access_list_id":0,"certificate_id":"2","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"add_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:36:04
modified_on: 2025-09-17 11:36:04
object_type: proxy-host
action: updated
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 11:33:46","owner_user_id":1,"domain_names":["np-dms.work","www.np-dms.work"],"forward_host":"landing","forward_port":80,"access_list_id":0,"certificate_id":"2","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"add_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 11:39:50
modified_on: 2025-09-17 11:39:50
object_type: proxy-host
action: updated
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 11:36:04","owner_user_id":1,"domain_names":["np-dms.work","www.np-dms.work"],"forward_host":"landing","forward_port":80,"access_list_id":0,"certificate_id":"2","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"add_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 12:02:21
modified_on: 2025-09-17 12:02:21
object_type: proxy-host
action: updated
meta:
  {"id":1,"created_on":"2025-09-17 09:56:57","modified_on":"2025-09-17 11:39:50","owner_user_id":1,"domain_names":["np-dms.work","www.np-dms.work"],"forward_host":"dms_landing","forward_port":80,"access_list_id":0,"certificate_id":"2","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"add_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 13:10:09
modified_on: 2025-09-17 13:10:09
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 11:32:10","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_pass http://frontend:3000/health;\nproxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend/health","forward_port":3000},{"path":"^~ /_next/static/","advanced_config":"proxy_pass http://frontend:3000;\nproxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"^~ /api/","advanced_config":"proxy_pass http://backend:3001;\nproxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP  $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE (เผื่อ endpoint แบบ upgrade)\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?|127\\.0\\.0\\.1(:\\d+)?|np-dms\\.work|www\\.np-dms\\.work|lcbp3\\.np-dms\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods     \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers     \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}","forward_scheme":"http","forward_host":"backend:","forward_port":3001},{"path":"^~ /pma/","advanced_config":"proxy_pass http://phpmyadmin/;\nproxy_http_version 1.1;\n\nproxy_set_header Host               $host;\nproxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  https;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"^~ /n8n/","advanced_config":"proxy_pass http://n8n/;\nproxy_http_version 1.1;\n\nproxy_set_header Host               $host;\nproxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  https;\nproxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade            $http_upgrade;\nproxy_set_header Connection         \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n# (ถ้าต้อง CORS แบบเดียวกับ /api/ ให้คัดลอกบล็อก CORS มาวางในนี้ได้)","forward_scheme":"http","forward_host":"dms_n8n","forward_port":80},{"path":"^~ /pgadmin/","advanced_config":"proxy_pass http://pgadmin/;\nproxy_http_version 1.1;\nproxy_set_header Host               $host;\nproxy_set_header X-Script-Name      /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  https;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 13:14:20
modified_on: 2025-09-17 13:14:20
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:10:09","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":false,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_pass http://frontend:3000/health;\nproxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend/health","forward_port":3000},{"path":"^~ /_next/static/","advanced_config":"proxy_pass http://frontend:3000;\nproxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"^~ /api/","advanced_config":"proxy_pass http://backend:3001;\nproxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP  $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE (เผื่อ endpoint แบบ upgrade)\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\d+)?|127\\.0\\.0\\.1(:\\d+)?|np-dms\\.work|www\\.np-dms\\.work|lcbp3\\.np-dms\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods     \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers     \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"^~ /pma/","advanced_config":"proxy_pass http://phpmyadmin/;\nproxy_http_version 1.1;\n\nproxy_set_header Host               $host;\nproxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  https;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"^~ /n8n/","advanced_config":"proxy_pass http://n8n/;\nproxy_http_version 1.1;\n\nproxy_set_header Host               $host;\nproxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  https;\nproxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade            $http_upgrade;\nproxy_set_header Connection         \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n# (ถ้าต้อง CORS แบบเดียวกับ /api/ ให้คัดลอกบล็อก CORS มาวางในนี้ได้)","forward_scheme":"http","forward_host":"dms_n8n","forward_port":80},{"path":"^~ /pgadmin/","advanced_config":"proxy_pass http://pgadmin/;\nproxy_http_version 1.1;\nproxy_set_header Host               $host;\nproxy_set_header X-Script-Name      /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  https;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80},{"path":"/n8n","advanced_config":"return 301 /n8n/;","forward_scheme":"http","forward_host":"dms_n8n","forward_port":80},{"path":"/pgadmin ","advanced_config":"return 301 /pgadmin/;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 13:35:58
modified_on: 2025-09-17 13:35:58
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:14:20","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 13:42:25
modified_on: 2025-09-17 13:42:25
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:35:58","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 13:46:25
modified_on: 2025-09-17 13:46:25
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["lcbp3.np-dms.work"],"meta":{"letsencrypt_agree":true,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"proxy_http_version\" directive is duplicate in /data/nginx/proxy_host/3.conf:116\nnginx: configuration file /etc/nginx/nginx.conf test failed\n","letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_certificate":{"cn":"lcbp3.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E7","dates":{"from":1758062872,"to":1765838871}}},"owner_user_id":1,"nice_name":"lcbp3.np-dms.work"}


created_on: 2025-09-17 13:46:25
modified_on: 2025-09-17 13:46:25
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:42:26","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":5,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 13:47:19
modified_on: 2025-09-17 13:47:19
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["lcbp3.np-dms.work"],"meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"letsencrypt_certificate":{"cn":"lcbp3.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E8","dates":{"from":1758062926,"to":1765838925}}},"owner_user_id":1,"nice_name":"lcbp3.np-dms.work"}


created_on: 2025-09-17 13:47:20
modified_on: 2025-09-17 13:47:20
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:46:25","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":6,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 13:47:48
modified_on: 2025-09-17 13:47:48
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["lcbp3.np-dms.work"],"meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"letsencrypt_certificate":{"cn":"lcbp3.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E8","dates":{"from":1758062955,"to":1765838954}}},"owner_user_id":1,"nice_name":"lcbp3.np-dms.work"}


created_on: 2025-09-17 13:47:48
modified_on: 2025-09-17 13:47:48
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:47:20","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 13:48:18
modified_on: 2025-09-17 13:48:18
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:47:48","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 13:48:22
modified_on: 2025-09-17 13:48:22
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:48:18","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"4","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 13:49:01
modified_on: 2025-09-17 13:49:01
object_type: certificate
action: deleted
meta:
  {"id":4,"created_on":"2025-09-17 11:17:46","modified_on":"2025-09-17 11:17:57","owner_user_id":1,"provider":"letsencrypt","nice_name":"lcbp3.np-dms.work","domain_names":["lcbp3.np-dms.work"],"expires_on":"2025-12-16 03:19:22","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false}}


created_on: 2025-09-17 13:49:08
modified_on: 2025-09-17 13:49:08
object_type: certificate
action: deleted
meta:
  {"id":5,"created_on":"2025-09-17 13:46:14","modified_on":"2025-09-17 13:46:25","owner_user_id":1,"provider":"letsencrypt","nice_name":"lcbp3.np-dms.work","domain_names":["lcbp3.np-dms.work"],"expires_on":"2025-12-16 05:47:51","meta":{"letsencrypt_agree":true,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"proxy_http_version\" directive is duplicate in /data/nginx/proxy_host/3.conf:116\nnginx: configuration file /etc/nginx/nginx.conf test failed\n","letsencrypt_email":"center.pslcp3@gmail.com"}}


created_on: 2025-09-17 13:49:15
modified_on: 2025-09-17 13:49:15
object_type: certificate
action: deleted
meta:
  {"id":6,"created_on":"2025-09-17 13:47:08","modified_on":"2025-09-17 13:47:19","owner_user_id":1,"provider":"letsencrypt","nice_name":"lcbp3.np-dms.work","domain_names":["lcbp3.np-dms.work"],"expires_on":"2025-12-16 05:48:45","meta":{"letsencrypt_email":"center.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false}}


created_on: 2025-09-17 13:49:41
modified_on: 2025-09-17 13:49:41
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:48:22","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_http_version 1.1;\n\nproxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_http_version 1.1;\nproxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 14:06:24
modified_on: 2025-09-17 14:06:24
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 13:49:41","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-Prefix /pma;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 14:09:21
modified_on: 2025-09-17 14:09:21
object_type: user
action: created
meta:
  {"id":2,"created_on":"2025-09-17 14:09:21","modified_on":"2025-09-17 14:09:21","is_disabled":false,"email":"center.pslcp3@gmail.com","name":"center.pslcp3","nickname":"center","avatar":"//www.gravatar.com/avatar/d965a2b10d599eb3d3752a0e686524a5?default=mm","roles":["admin"],"permissions":{"id":2,"created_on":"2025-09-17 14:09:21","modified_on":"2025-09-17 14:09:21","user_id":2,"visibility":"all","proxy_hosts":"manage","redirection_hosts":"manage","dead_hosts":"manage","streams":"manage","access_lists":"manage","certificates":"manage"}}


created_on: 2025-09-17 14:09:29
modified_on: 2025-09-17 14:09:29
object_type: user
action: updated
meta:
  {"name":"center.pslcp3","permissions":{"user_id":2,"visibility":"all","access_lists":"manage","dead_hosts":"manage","proxy_hosts":"manage","redirection_hosts":"manage","streams":"manage","certificates":"manage","id":2,"modified_on":"2025-09-17 14:09:29","created_on":"2025-09-17 14:09:21"}}


created_on: 2025-09-17 14:11:39
modified_on: 2025-09-17 14:11:39
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 14:06:24","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"# ตัด prefix /pma/ ออกจาก URI ก่อนส่งเข้า phpMyAdmin\nrewrite ^/pma/(.*)$ /$1 break;\n\n# แจ้ง header มาตรฐานสำหรับ reverse proxy ใต้ sub-path\nproxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  https;\nproxy_set_header X-Forwarded-Port   443;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 14:30:53
modified_on: 2025-09-17 14:30:53
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 14:11:40","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001},{"path":"/pma/","advanced_config":"# ตัด prefix /pma/ ออกจาก URI ก่อนส่งเข้า phpMyAdmin\nrewrite ^/pma/(.*)$ /$1 break;\n\n# แจ้ง header มาตรฐานสำหรับ reverse proxy ใต้ sub-path\nproxy_set_header X-Forwarded-Host   $host;\nproxy_set_header X-Forwarded-Proto  https;\nproxy_set_header X-Forwarded-Port   443;\nproxy_set_header X-Forwarded-Prefix /pma;\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_phpmyadmin","forward_port":80},{"path":"/n8n","advanced_config":"rewrite ^/n8n$ /n8n/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":80},{"path":"/n8n/","advanced_config":"rewrite ^/n8n/(.*)$ /$1 break;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Prefix /n8n;\n\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 86400s;\nproxy_send_timeout 86400s;\nproxy_redirect off;\n","forward_scheme":"http","forward_host":"dms_n8n","forward_port":5678},{"path":"/pgadmin","advanced_config":"rewrite ^/pgadmin$ /pgadmin/ permanent;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/pgadmin/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Script-Name /pgadmin;\nproxy_set_header X-Forwarded-Prefix /pgadmin;\nproxy_set_header X-Forwarded-Host $host;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;","forward_scheme":"http","forward_host":"dms_pgadmin","forward_port":80}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-17 15:09:35
modified_on: 2025-09-17 15:09:35
object_type: proxy-host
action: created
meta:
  {"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_scheme":"https","forward_host":"lcbp3c2.myqnapcloud.com","forward_port":8443,"block_exploits":true,"access_list_id":0,"certificate_id":"0","meta":{"letsencrypt_agree":false,"dns_challenge":false},"advanced_config":"","locations":[],"caching_enabled":false,"allow_websocket_upgrade":false,"http2_support":false,"hsts_enabled":false,"hsts_subdomains":false,"ssl_forced":false,"owner_user_id":1}


created_on: 2025-09-17 15:13:32
modified_on: 2025-09-17 15:13:32
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:09:35","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"lcbp3c2.myqnapcloud.com","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:21:39
modified_on: 2025-09-17 15:21:39
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:13:32","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"lcbp3c2.myqnapcloud.com","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:23:42
modified_on: 2025-09-17 15:23:42
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:21:40","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"lcbp3c2.myqnapcloud.com","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"roxy_set_header        X-Forwarded-Host    $host;\r\nproxy_set_header        X-Forwarded-Proto   $scheme;\r\nproxy_set_header        X-Real-IP           $remote_addr;\r\nproxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;\r\nproxy_set_header        Host                $host;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:24:52
modified_on: 2025-09-17 15:24:52
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:23:43","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"lcbp3c2.myqnapcloud.com","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_set_header        X-Forwarded-Host    $host;\r\nproxy_set_header        X-Forwarded-Proto   $scheme;\r\nproxy_set_header        X-Real-IP           $remote_addr;\r\nproxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;\r\nproxy_set_header        Host                $host;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:25:11
modified_on: 2025-09-17 15:25:11
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:24:52","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"lcbp3c2.myqnapcloud.com","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_set_header        X-Forwarded-Host    $host;\r\nproxy_set_header        X-Forwarded-Proto   $scheme;\r\nproxy_set_header        X-Real-IP           $remote_addr;\r\nproxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;\r\nproxy_set_header        Host                $host;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:35:46
modified_on: 2025-09-17 15:35:46
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:25:12","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"lcbp3c2.myqnapcloud.com","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_set_header        X-Forwarded-Host    $host;\r\nproxy_set_header        X-Forwarded-Proto   $scheme;\r\nproxy_set_header        X-Real-IP           $remote_addr;\r\nproxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;\r\nproxy_set_header        Host                $host;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:41:29
modified_on: 2025-09-17 15:41:29
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:35:46","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# ส่ง header พื้นฐานให้ครบ\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# เปิด SNI ตอนต่อไป upstream ที่ :8443 (จำเป็นเมื่อ upstream เป็น HTTPS)\r\nproxy_ssl_server_name on;\r\nproxy_ssl_verify off;           # QTS ใช้ cert ภายในหรือตัวมันเอง ให้ปิด verify เพื่อต่อได้ชัวร์\r\nproxy_ssl_protocols TLSv1.2 TLSv1.3;\r\n\r\n# ปรับ timeout ให้อึดขึ้นนิด\r\nproxy_read_timeout  300s;\r\nproxy_send_timeout  300s;\r\n\r\n# กัน redirect แปลกๆ\r\nproxy_redirect off;\r\n\r\n# เผื่อหน้า login/QTS ใช้ cookie ยาว\r\nproxy_buffers 16 16k;\r\nproxy_buffer_size 32k;\r\n\r\n# WebSocket (บางหน้าของ QTS/NAS ใช้)\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $http_connection;\r\n\r\n# เผื่อ path root ของ QTS UI\r\nsub_filter_once off;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:44:35
modified_on: 2025-09-17 15:44:35
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:41:29","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"192.168.20.248","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# ส่ง header พื้นฐานให้ครบ\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# เปิด SNI ตอนต่อไป upstream ที่ :8443 (จำเป็นเมื่อ upstream เป็น HTTPS)\r\nproxy_ssl_server_name on;\r\nproxy_ssl_verify off;           # QTS ใช้ cert ภายในหรือตัวมันเอง ให้ปิด verify เพื่อต่อได้ชัวร์\r\nproxy_ssl_protocols TLSv1.2 TLSv1.3;\r\n\r\n# ปรับ timeout ให้อึดขึ้นนิด\r\nproxy_read_timeout  300s;\r\nproxy_send_timeout  300s;\r\n\r\n# กัน redirect แปลกๆ\r\nproxy_redirect off;\r\n\r\n# เผื่อหน้า login/QTS ใช้ cookie ยาว\r\nproxy_buffers 16 16k;\r\nproxy_buffer_size 32k;\r\n\r\n# WebSocket (บางหน้าของ QTS/NAS ใช้)\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $http_connection;\r\n\r\n# เผื่อ path root ของ QTS UI\r\nsub_filter_once off;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:44:51
modified_on: 2025-09-17 15:44:51
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:44:35","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"192.168.20.248","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\nproxy_ssl_server_name on;\r\nproxy_ssl_verify off;\r\nproxy_ssl_protocols TLSv1.2 TLSv1.3;\r\n\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $http_connection;\r\n\r\nproxy_buffers 16 16k;\r\nproxy_buffer_size 32k;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:52:21
modified_on: 2025-09-17 15:52:21
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:44:51","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"192.168.20.248","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\nproxy_ssl_server_name on;\r\nproxy_ssl_verify off;\r\nproxy_ssl_protocols TLSv1.2 TLSv1.3;\r\n\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $http_connection;\r\n\r\nproxy_buffers 16 16k;\r\nproxy_buffer_size 32k;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 15:53:39
modified_on: 2025-09-17 15:53:39
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:52:21","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"192.168.20.248","forward_port":8443,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\nproxy_ssl_server_name on;\r\nproxy_ssl_verify off;\r\nproxy_ssl_protocols TLSv1.2 TLSv1.3;\r\n\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $http_connection;\r\n\r\nproxy_buffers 16 16k;\r\nproxy_buffer_size 32k;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 16:12:30
modified_on: 2025-09-17 16:12:30
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 15:53:39","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# เสิร์ฟไฟล์ตรงจาก /data/landing (ที่เรา mount มา)\r\nlocation / {\r\n    root /data/landing;\r\n    index index.html index.htm;\r\n    try_files $uri $uri/ /index.html;\r\n}\r\n\r\n# เปิด gzip เบา ๆ (ทางเลือก)\r\ngzip on;\r\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 16:14:58
modified_on: 2025-09-17 16:14:58
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 16:12:31","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# เสิร์ฟไฟล์ตรงจาก /data/landing (ที่เรา mount มา)\r\nlocation / {\r\n    root /data/landing;\r\n    index index.html index.htm;\r\n    try_files $uri $uri/ /index.html;\r\n}\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 16:16:50
modified_on: 2025-09-17 16:16:50
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 16:14:58","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"dms_nginx","forward_port":80,"access_list_id":0,"certificate_id":"7","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# เสิร์ฟไฟล์ตรงจาก /data/landing (ที่เรา mount มา)\r\nlocation / {\r\n    root /data/landing;\r\n    index index.html index.htm;location / {\r\n    proxy_set_header Host              $host;\r\n    proxy_set_header X-Real-IP         $remote_addr;\r\n    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\n    proxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n    proxy_read_timeout 300s;\r\n    proxy_send_timeout 300s;\r\n    proxy_redirect off;\r\n\r\n    # ถ้า root ของ dms_nginx คือ /usr/share/nginx/html\r\n    # และไฟล์อยู่ /landing ให้ proxy ไป path นั้น\r\n    proxy_pass http://dms_nginx:80/landing/;\r\n}\r\n\r\n    try_files $uri $uri/ /index.html;a\r\n}\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 16:17:47
modified_on: 2025-09-17 16:17:47
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 16:16:50","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"dms_nginx","forward_port":80,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# เสิร์ฟไฟล์ตรงจาก /data/landing (ที่เรา mount มา)\r\nlocation / {\r\n    root /data/landing;\r\n    index index.html index.htm;location / {\r\n    proxy_set_header Host              $host;\r\n    proxy_set_header X-Real-IP         $remote_addr;\r\n    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\n    proxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n    proxy_read_timeout 300s;\r\n    proxy_send_timeout 300s;\r\n    proxy_redirect off;\r\n\r\n    # ถ้า root ของ dms_nginx คือ /usr/share/nginx/html\r\n    # และไฟล์อยู่ /landing ให้ proxy ไป path นั้น\r\n    proxy_pass http://dms_nginx:80/landing/;\r\n}\r\n\r\n    try_files $uri $uri/ /index.html;a\r\n}\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 16:18:48
modified_on: 2025-09-17 16:18:48
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 16:17:47","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"dms_nginx","forward_port":80,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# ส่งหัวพื้นฐาน\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ชี้ไป path /landing/ บน dms_nginx โดยตรง\r\nlocation = / { return 302 /landing/; }\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 16:27:40
modified_on: 2025-09-17 16:27:40
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 16:18:49","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"dms_npm","forward_port":80,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# เสิร์ฟไฟล์ตรงจาก /data/landing (ไม่สร้าง location ใหม่ เลี่ยงชน template)\r\nset $static_root \"/data/landing\";\r\ntry_files $uri $uri/ $static_root$uri $static_root$uri/ $static_root/index.html =404;\r\nroot $static_root;\r\nindex index.html index.htm;\r\n\r\ngzip on;\r\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 16:58:11
modified_on: 2025-09-17 16:58:11
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 16:27:40","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# เสิร์ฟไฟล์ตรงจาก /data/landing\r\nset $static_root \"/data/landing\";\r\ntry_files $uri $uri/ $static_root$uri $static_root$uri/ $static_root/index.html =404;\r\nroot $static_root;\r\nindex index.html index.htm;\r\n\r\n# (ทางเลือก) ให้ / เด้งไป /landing/ ชัดเจน\r\n# location = / { return 302 /landing/; }\r\n\r\n# gzip เบาๆ\r\ngzip on;\r\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 17:00:44
modified_on: 2025-09-17 17:00:44
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 16:58:11","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"set $static_root \"/data/landing\";\r\ntry_files $uri $uri/ $static_root$uri $static_root$uri/ $static_root/index.html =404;\r\nroot $static_root;\r\nindex index.html index.htm;\r\n\r\ngzip on;\r\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-17 17:08:42
modified_on: 2025-09-17 17:08:42
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 17:00:44","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\r\nlocation = / {\r\n    return 302 /landing/;\r\n}\r\n\r\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\r\nlocation ^~ /landing/ {\r\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\r\n    index index.html;\r\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\r\n}\r\n\r\n# 3) gzip (ทางเลือก)\r\ngzip on;\r\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-18 08:06:22
modified_on: 2025-09-18 08:06:22
object_type: proxy-host
action: disabled
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-17 17:08:42","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":0,"ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\r\nlocation = / {\r\n    return 302 /landing/;\r\n}\r\n\r\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\r\nlocation ^~ /landing/ {\r\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\r\n    index index.html;\r\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\r\n}\r\n\r\n# 3) gzip (ทางเลือก)\r\ngzip on;\r\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":0,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-18 16:56:48
modified_on: 2025-09-18 16:56:48
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["git.np-dms.work"],"meta":{"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"letsencrypt_certificate":{"cn":"git.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E8","dates":{"from":1758160695,"to":1765936694}}},"owner_user_id":1,"nice_name":"git.np-dms.work"}


created_on: 2025-09-18 16:56:48
modified_on: 2025-09-18 16:56:48
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-18 16:49:50","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"192.168.20.248","forward_port":3002,"access_list_id":0,"certificate_id":10,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"","meta":{"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 08:43:38
modified_on: 2025-09-19 08:43:38
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-18 16:56:49","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3002,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[{"path":"/","advanced_config":"client_max_body_size 64m;\n\n# WebSocket/Server-Sent Events (บางหน้าใน Gitea ใช้)\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection $connection_upgrade;\n\n# มาตรฐาน\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Real-IP $remote_addr;\n\n# ปรับแก้ถ้าดาวน์โหลด/อัปโหลด repo ใหญ่\nproxy_read_timeout 600s;\nsend_timeout 600s;","forward_scheme":"http","forward_host":"gitea","forward_port":3002}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 08:53:59
modified_on: 2025-09-19 08:53:59
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 08:43:38","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"192.168.20.248","forward_port":3002,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[{"path":"/","advanced_config":"client_max_body_size 64m;\n\n# WebSocket/Server-Sent Events (บางหน้าใน Gitea ใช้)\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection $connection_upgrade;\n\n# มาตรฐาน\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Real-IP $remote_addr;\n\n# ปรับแก้ถ้าดาวน์โหลด/อัปโหลด repo ใหญ่\nproxy_read_timeout 600s;\nsend_timeout 600s;","forward_scheme":"http","forward_host":"gitea","forward_port":3002}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 08:56:06
modified_on: 2025-09-19 08:56:06
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 08:53:59","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"192.168.20.248","forward_port":3002,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[{"path":"/","advanced_config":"client_max_body_size 64m;\n\n# WebSocket/Server-Sent Events (บางหน้าใน Gitea ใช้)\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection $connection_upgrade;\n\n# มาตรฐาน\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Real-IP $remote_addr;\n\n# ปรับแก้ถ้าดาวน์โหลด/อัปโหลด repo ใหญ่\nproxy_read_timeout 600s;\nsend_timeout 600s;","forward_scheme":"http","forward_host":"gitea","forward_port":3002}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 12:33:34
modified_on: 2025-09-19 12:33:34
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 08:56:07","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"192.168.20.248","forward_port":3003,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[{"path":"/","advanced_config":"client_max_body_size 64m;\n\n# WebSocket/Server-Sent Events (บางหน้าใน Gitea ใช้)\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection $connection_upgrade;\n\n# มาตรฐาน\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Real-IP $remote_addr;\n\n# ปรับแก้ถ้าดาวน์โหลด/อัปโหลด repo ใหญ่\nproxy_read_timeout 600s;\nsend_timeout 600s;","forward_scheme":"http","forward_host":"192.168.20.248","forward_port":3003}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 13:47:20
modified_on: 2025-09-19 13:47:20
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 12:33:34","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"192.168.20.248","forward_port":3003,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[{"path":"/","advanced_config":"client_max_body_size 64m;\n\n# WebSocket/Server-Sent Events (บางหน้าใน Gitea ใช้)\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection $connection_upgrade;\n\n# มาตรฐาน\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Real-IP $remote_addr;\n\n# ปรับแก้ถ้าดาวน์โหลด/อัปโหลด repo ใหญ่\nproxy_read_timeout 600s;\nsend_timeout 600s;","forward_scheme":"http","forward_host":"192.168.20.248","forward_port":3003}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-19 13:56:06
modified_on: 2025-09-19 13:56:06
object_type: proxy-host
action: enabled
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-18 08:06:21","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":0,"ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\r\nlocation = / {\r\n    return 302 /landing/;\r\n}\r\n\r\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\r\nlocation ^~ /landing/ {\r\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\r\n    index index.html;\r\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\r\n}\r\n\r\n# 3) gzip (ทางเลือก)\r\ngzip on;\r\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":1,"locations":[],"hsts_enabled":false,"hsts_subdomains":false,"certificate":null,"owner":{"id":1,"created_on":"2025-09-17 09:48:29","modified_on":"2025-09-17 09:52:39","is_disabled":false,"email":"peancharoen.pslcp3@gmail.com","name":"Nattanin Peancharoen","nickname":"center","avatar":"//www.gravatar.com/avatar/359ab189ab83534aa79972668f5b3ff5?default=mm","roles":["admin"]},"access_list":null}


created_on: 2025-09-19 13:57:50
modified_on: 2025-09-19 13:57:50
object_type: proxy-host
action: updated
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-19 13:56:06","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":"0","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/","advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\nlocation = / {\n    return 302 /landing/;\n}\n\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\nlocation ^~ /landing/ {\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\n    index index.html;\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\n}\n\n# 3) gzip (ทางเลือก)\ngzip on;\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\n","forward_scheme":"http","forward_host":"127.0.0.1","forward_port":8443}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 14:00:30
modified_on: 2025-09-19 14:00:30
object_type: proxy-host
action: disabled
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-19 13:57:50","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":0,"ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":0,"locations":[{"path":"/","advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\nlocation = / {\n    return 302 /landing/;\n}\n\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\nlocation ^~ /landing/ {\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\n    index index.html;\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\n}\n\n# 3) gzip (ทางเลือก)\ngzip on;\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\n","forward_scheme":"http","forward_host":"127.0.0.1","forward_port":8443}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 14:15:01
modified_on: 2025-09-19 14:15:01
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["pma.np-dms.work"],"meta":{"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"letsencrypt_certificate":{"cn":"pma.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E8","dates":{"from":1758237388,"to":1766013387}}},"owner_user_id":1,"nice_name":"pma.np-dms.work"}


created_on: 2025-09-19 14:15:02
modified_on: 2025-09-19 14:15:02
object_type: proxy-host
action: updated
meta:
  {"id":6,"created_on":"2025-09-19 14:14:45","modified_on":"2025-09-19 14:14:45","owner_user_id":1,"domain_names":["pma.np-dms.work"],"forward_host":"phpmyadmin","forward_port":80,"access_list_id":0,"certificate_id":11,"ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[{"path":"/","advanced_config":"client_max_body_size 128m;\n\nadd_header X-Frame-Options \"SAMEORIGIN\" always;\nadd_header X-Content-Type-Options \"nosniff\" always;\nadd_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\nadd_header Permissions-Policy \"camera=(), microphone=(), geolocation=()\" always;\n\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Real-IP $remote_addr;\n\nproxy_buffering off;","forward_scheme":"http","forward_host":"phpmyadmin","forward_port":80}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 14:15:03
modified_on: 2025-09-19 14:15:03
object_type: proxy-host
action: created
meta:
  {"forward_scheme":"http","forward_host":"phpmyadmin","forward_port":80,"advanced_config":"","domain_names":["pma.np-dms.work"],"block_exploits":true,"allow_websocket_upgrade":true,"access_list_id":0,"ssl_forced":false,"http2_support":false,"hsts_enabled":false,"meta":{"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"locations":[{"path":"/","advanced_config":"client_max_body_size 128m;\n\nadd_header X-Frame-Options \"SAMEORIGIN\" always;\nadd_header X-Content-Type-Options \"nosniff\" always;\nadd_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\nadd_header Permissions-Policy \"camera=(), microphone=(), geolocation=()\" always;\n\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Real-IP $remote_addr;\n\nproxy_buffering off;","forward_scheme":"http","forward_host":"phpmyadmin","forward_port":80}],"caching_enabled":false,"hsts_subdomains":false,"owner_user_id":1}


created_on: 2025-09-19 14:17:38
modified_on: 2025-09-19 14:17:38
object_type: proxy-host
action: updated
meta:
  {"id":6,"created_on":"2025-09-19 14:14:45","modified_on":"2025-09-19 14:15:02","owner_user_id":1,"domain_names":["pma.np-dms.work"],"forward_host":"phpmyadmin","forward_port":80,"access_list_id":0,"certificate_id":"11","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"client_max_body_size 128m;\r\n\r\nadd_header X-Frame-Options \"SAMEORIGIN\" always;\r\nadd_header X-Content-Type-Options \"nosniff\" always;\r\nadd_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\r\nadd_header Permissions-Policy \"camera=(), microphone=(), geolocation=()\" always;\r\n\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Real-IP $remote_addr;\r\n\r\nproxy_buffering off;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-19 14:18:21
modified_on: 2025-09-19 14:18:21
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 13:47:20","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"192.168.20.248","forward_port":3003,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"client_max_body_size 64m;\r\n\r\n# WebSocket/Server-Sent Events (บางหน้าใน Gitea ใช้)\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# มาตรฐาน\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Real-IP $remote_addr;\r\n\r\n# ปรับแก้ถ้าดาวน์โหลด/อัปโหลด repo ใหญ่\r\nproxy_read_timeout 600s;\r\nsend_timeout 600s;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-19 14:41:45
modified_on: 2025-09-19 14:41:45
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 14:18:21","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3003,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"client_max_body_size 64m;\r\n\r\n# WebSocket/Server-Sent Events (บางหน้าใน Gitea ใช้)\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# มาตรฐาน\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Real-IP $remote_addr;\r\n\r\n# ปรับแก้ถ้าดาวน์โหลด/อัปโหลด repo ใหญ่\r\nproxy_connect_timeout 10s;\r\nproxy_send_timeout 90s;\r\nproxy_read_timeout 90s;\r\nsend_timeout 90s;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-19 15:12:12
modified_on: 2025-09-19 15:12:12
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-17 14:30:54","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"proxy_set_header Host $host;\nproxy_set_header X-Real-IP $remote_addr;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\n\n# WebSocket/SSE เผื่อใช้\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-19 15:39:11
modified_on: 2025-09-19 15:39:11
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 14:41:46","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3003,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# ให้ NPM ส่ง header พื้นฐานครบถ้วน\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กันหน้าแรก/รีไดเรกต์ช้า\r\nproxy_connect_timeout 10s;\r\nproxy_send_timeout 90s;\r\nproxy_read_timeout 90s;\r\nsend_timeout 90s;\r\n\r\n# เผื่อ Git LFS / ไฟล์ใหญ่\r\nclient_max_body_size 512m;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-19 15:41:02
modified_on: 2025-09-19 15:41:02
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 15:39:12","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# ให้ NPM ส่ง header พื้นฐานครบถ้วน\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กันหน้าแรก/รีไดเรกต์ช้า\r\nproxy_connect_timeout 10s;\r\nproxy_send_timeout 90s;\r\nproxy_read_timeout 90s;\r\nsend_timeout 90s;\r\n\r\n# เผื่อ Git LFS / ไฟล์ใหญ่\r\nclient_max_body_size 512m;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"https","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-19 16:06:09
modified_on: 2025-09-19 16:06:09
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 15:41:02","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# ให้ NPM ส่ง header พื้นฐานครบถ้วน\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กันหน้าแรก/รีไดเรกต์ช้า\r\nproxy_connect_timeout 10s;\r\nproxy_send_timeout 90s;\r\nproxy_read_timeout 90s;\r\nsend_timeout 90s;\r\n\r\n# เผื่อ Git LFS / ไฟล์ใหญ่\r\nclient_max_body_size 512m;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-19 16:13:06
modified_on: 2025-09-19 16:13:06
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 16:06:09","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# ให้ NPM ส่ง header พื้นฐานครบถ้วน\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กันหน้าแรก/รีไดเรกต์ช้า\r\nproxy_connect_timeout 30s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nsend_timeout 300s;\r\nclient_max_body_size 512m;\r\nproxy_request_buffering off;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-20 17:25:25
modified_on: 2025-09-20 17:25:25
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-19 16:13:06","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# ให้ NPM ส่ง header พื้นฐานครบถ้วน\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header Authorization $http_authorization;\r\nproxy_pass_request_headers on;\r\n# กันหน้าแรก/รีไดเรกต์ช้า\r\nproxy_connect_timeout 30s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nsend_timeout 300s;\r\nclient_max_body_size 512m;\r\nproxy_request_buffering off;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 09:54:17
modified_on: 2025-09-21 09:54:17
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-20 17:25:26","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_http_version 1.1;\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header Authorization $http_authorization;\r\nproxy_pass_request_headers on;\r\nproxy_connect_timeout 30s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nsend_timeout 300s;\r\nclient_max_body_size 512m;\r\nproxy_request_buffering off;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 09:55:10
modified_on: 2025-09-21 09:55:10
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 09:54:17","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_http_version 1.1;\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header Authorization $http_authorization;\r\nproxy_pass_request_headers on;\r\nproxy_connect_timeout 30s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nsend_timeout 300s;\r\nclient_max_body_size 512m;\r\nproxy_request_buffering off;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 09:56:16
modified_on: 2025-09-21 09:56:16
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 09:55:10","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_pass_request_headers on;\r\nproxy_connect_timeout 30s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nsend_timeout 300s;\r\nclient_max_body_size 512m;\r\nproxy_request_buffering off;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:15:14
modified_on: 2025-09-21 10:15:14
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 09:56:16","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_http_version 1.1;\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\nproxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:15:29
modified_on: 2025-09-21 10:15:29
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:15:14","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# proxy_http_version 1.1;\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\nproxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:15:47
modified_on: 2025-09-21 10:15:47
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:15:30","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# proxy_http_version 1.1;\r\n# proxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\nproxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:16:11
modified_on: 2025-09-21 10:16:11
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:15:48","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_http_version 1.1;\r\n# proxy_set_header Upgrade $http_upgrade;\r\n# proxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\nproxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:16:39
modified_on: 2025-09-21 10:16:39
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:16:11","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# proxy_http_version 1.1;\r\n# proxy_set_header Upgrade $http_upgrade;\r\n# proxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\nproxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:17:45
modified_on: 2025-09-21 10:17:45
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:16:39","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# proxy_http_version 1.1;\r\n# proxy_set_header Upgrade $http_upgrade;\r\n# proxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\n# proxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:17:52
modified_on: 2025-09-21 10:17:52
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:17:45","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_http_version 1.1;\r\n# proxy_set_header Upgrade $http_upgrade;\r\n# proxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\n# proxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:18:08
modified_on: 2025-09-21 10:18:08
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:17:53","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# proxy_http_version 1.1;\r\nproxy_set_header Upgrade $http_upgrade;\r\n# proxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\n# proxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:18:21
modified_on: 2025-09-21 10:18:21
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:18:08","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# proxy_http_version 1.1;\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\n# proxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:18:42
modified_on: 2025-09-21 10:18:42
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:18:21","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"# proxy_http_version 1.1;\r\nproxy_set_header Upgrade $http_upgrade;\r\nproxy_set_header Connection \"upgrade\";\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# กำหนดปลายทางในนี้แทนหน้า Details\r\n# proxy_pass http://gitea:3000;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-09-21 10:29:08
modified_on: 2025-09-21 10:29:08
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:18:42","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":true,"advanced_config":"proxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header Authorization $http_authorization;\r\n\r\nproxy_connect_timeout 30s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nsend_timeout 300s;\r\nclient_max_body_size 512m;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-21 10:30:59
modified_on: 2025-09-21 10:30:59
object_type: proxy-host
action: updated
meta:
  {"id":5,"created_on":"2025-09-18 16:49:50","modified_on":"2025-09-21 10:29:08","owner_user_id":1,"domain_names":["git.np-dms.work"],"forward_host":"gitea","forward_port":3000,"access_list_id":0,"certificate_id":"10","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"proxy_set_header Host $host;\r\nproxy_set_header X-Real-IP $remote_addr;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header Authorization $http_authorization;\r\n\r\nproxy_connect_timeout 30s;\r\nproxy_send_timeout 300s;\r\nproxy_read_timeout 300s;\r\nsend_timeout 300s;\r\nclient_max_body_size 512m;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-21 10:46:27
modified_on: 2025-09-21 10:46:27
object_type: proxy-host
action: enabled
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-19 14:00:30","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":0,"ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":1,"locations":[{"path":"/","advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\nlocation = / {\n    return 302 /landing/;\n}\n\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\nlocation ^~ /landing/ {\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\n    index index.html;\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\n}\n\n# 3) gzip (ทางเลือก)\ngzip on;\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\n","forward_scheme":"http","forward_host":"127.0.0.1","forward_port":8443}],"hsts_enabled":false,"hsts_subdomains":false,"certificate":null,"owner":{"id":1,"created_on":"2025-09-17 09:48:29","modified_on":"2025-09-17 09:52:39","is_disabled":false,"email":"peancharoen.pslcp3@gmail.com","name":"Nattanin Peancharoen","nickname":"center","avatar":"//www.gravatar.com/avatar/359ab189ab83534aa79972668f5b3ff5?default=mm","roles":["admin"]},"access_list":null}


created_on: 2025-09-21 10:46:32
modified_on: 2025-09-21 10:46:32
object_type: proxy-host
action: disabled
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-21 10:46:26","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":0,"ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":0,"locations":[{"path":"/","advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\nlocation = / {\n    return 302 /landing/;\n}\n\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\nlocation ^~ /landing/ {\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\n    index index.html;\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\n}\n\n# 3) gzip (ทางเลือก)\ngzip on;\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\n","forward_scheme":"http","forward_host":"127.0.0.1","forward_port":8443}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-09-21 10:46:42
modified_on: 2025-09-21 10:46:42
object_type: proxy-host
action: deleted
meta:
  {"id":4,"created_on":"2025-09-17 15:09:35","modified_on":"2025-09-21 10:46:32","owner_user_id":1,"domain_names":["lcbp3c2.myqnapcloud.com"],"forward_host":"127.0.0.1","forward_port":65535,"access_list_id":0,"certificate_id":0,"ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"allow_websocket_upgrade":false,"http2_support":false,"forward_scheme":"http","enabled":false,"locations":[{"path":"/","advanced_config":"# 1) ให้ root เด้งไป /landing/ ชัด ๆ\nlocation = / {\n    return 302 /landing/;\n}\n\n# 2) เสิร์ฟ static ใต้ /landing/ โดยตรงจากโฟลเดอร์ที่ mount มา\nlocation ^~ /landing/ {\n    alias /data/landing/;                      # << สำคัญ: alias ต้องมี '/' ท้าย\n    index index.html;\n    try_files $uri $uri/ /landing/index.html;  # SPA-friendly\n}\n\n# 3) gzip (ทางเลือก)\ngzip on;\ngzip_types text/plain text/css application/javascript application/json image/svg+xml;\n","forward_scheme":"http","forward_host":"127.0.0.1","forward_port":8443}],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-10-01 13:49:32
modified_on: 2025-10-01 13:49:32
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-09-19 15:12:13","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== Proxy headers พื้นฐาน (ให้ backend รู้ proto จริง) =====\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\n# หมายเหตุ: ถ้า $connection_upgrade ยังไม่ถูกนิยามในระบบคุณ\r\n# ให้เปลี่ยนบรรทัดที่สองเป็น:  proxy_set_header Connection \"upgrade\";\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== สำคัญสำหรับคุกกี้ HttpOnly =====\r\n# อย่าตัด Set-Cookie ของ backend ทิ้ง\r\nproxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# (ถ้ามีซับโดเมนที่ยังไม่ HTTPS ให้เอา includeSubDomains ออกชั่วคราว)\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# === upstream headers พื้นฐาน ===\nproxy_set_header Host              $host;\nproxy_set_header X-Real-IP         $remote_addr;\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;     # แก้จาก \"https\" → ใช้ $scheme ให้ถูกตามจริง\n\n# WebSocket/SSE\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# >>> สำคัญสำหรับคุกกี้ <<<\nproxy_pass_header Set-Cookie;      # ให้ Nginx ส่ง Set-Cookie กลับ client (ห้ามตัดทิ้ง)\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\n\n# ถ้าต้องการ allow เฉพาะที่ match เท่านั้น ให้คง pattern เดิมไว้\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\n\n# เผย header ที่จำเป็นต่อการดาวน์โหลด/ดูไฟล์\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\n\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 11:44:03
modified_on: 2025-10-02 11:44:03
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-01 13:49:33","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== Proxy headers พื้นฐาน (ให้ backend รู้ proto จริง) =====\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\n# หมายเหตุ: ถ้า $connection_upgrade ยังไม่ถูกนิยามในระบบคุณ\r\n# ให้เปลี่ยนบรรทัดที่สองเป็น:  proxy_set_header Connection \"upgrade\";\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== สำคัญสำหรับคุกกี้ HttpOnly =====\r\n# อย่าตัด Set-Cookie ของ backend ทิ้ง\r\nproxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# (ถ้ามีซับโดเมนที่ยังไม่ HTTPS ให้เอา includeSubDomains ออกชั่วคราว)\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# === upstream headers พื้นฐาน ===\nproxy_set_header Host              $host;\nproxy_set_header X-Real-IP         $remote_addr;\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;     # แก้จาก \"https\" → ใช้ $scheme ให้ถูกตามจริง\n\n# WebSocket/SSE\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# >>> สำคัญสำหรับคุกกี้ <<<\nproxy_pass_header Set-Cookie;      # ให้ Nginx ส่ง Set-Cookie กลับ client (ห้ามตัดทิ้ง)\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\n\n# ถ้าต้องการ allow เฉพาะที่ match เท่านั้น ให้คง pattern เดิมไว้\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\n\n# เผย header ที่จำเป็นต่อการดาวน์โหลด/ดูไฟล์\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\n\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:02:09
modified_on: 2025-10-02 16:02:09
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 11:44:04","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# === upstream headers พื้นฐาน ===\nproxy_set_header Host              $host;\nproxy_set_header X-Real-IP         $remote_addr;\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;     # แก้จาก \"https\" → ใช้ $scheme ให้ถูกตามจริง\n\n# WebSocket/SSE\nproxy_set_header Upgrade $http_upgrade;\nproxy_set_header Connection \"upgrade\";\n\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off;\n\n# >>> สำคัญสำหรับคุกกี้ <<<\nproxy_pass_header Set-Cookie;      # ให้ Nginx ส่ง Set-Cookie กลับ client (ห้ามตัดทิ้ง)\n\n# ---- CORS allowlist ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\n\n# ถ้าต้องการ allow เฉพาะที่ match เท่านั้น ให้คง pattern เดิมไว้\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\n\n# เผย header ที่จำเป็นต่อการดาวน์โหลด/ดูไฟล์\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\n\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}\n","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:02:48
modified_on: 2025-10-02 16:02:48
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:02:09","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:05:45
modified_on: 2025-10-02 16:05:45
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:02:49","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# Timeout ที่ยาวเป็นพิเศษสำหรับ API endpoint นี้เท่านั้น\nproxy_read_timeout 300s;\nproxy_send_timeout 300s;\nproxy_redirect off; # ยังคงไว้เหมือนเดิม ดีแล้วครับ\n\n# ---- CORS allowlist (ส่วนนี้สมบูรณ์แบบมากครับ) ----\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n  set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ---- Handling OPTIONS pre-flight requests (ดีเยี่ยม) ----\nif ($request_method = OPTIONS) {\n  add_header Content-Length 0;\n  add_header Content-Type text/plain;\n  return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:06:33
modified_on: 2025-10-02 16:06:33
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:05:46","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:07:11
modified_on: 2025-10-02 16:07:11
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:06:34","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:12:18
modified_on: 2025-10-02 16:12:18
object_type: proxy-host
action: disabled
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:07:11","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"map\" directive is not allowed here in /data/nginx/proxy_host/3.conf:73\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":0,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:16:00
modified_on: 2025-10-02 16:16:00
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:12:17","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":false,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:16:08
modified_on: 2025-10-02 16:16:08
object_type: proxy-host
action: enabled
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:16:00","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":1,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false,"certificate":{"id":7,"created_on":"2025-09-17 13:47:37","modified_on":"2025-09-17 13:47:48","owner_user_id":1,"is_deleted":false,"provider":"letsencrypt","nice_name":"lcbp3.np-dms.work","domain_names":["lcbp3.np-dms.work"],"expires_on":"2025-12-16 05:49:14","meta":{}},"owner":{"id":1,"created_on":"2025-09-17 09:48:29","modified_on":"2025-09-17 09:52:39","is_disabled":false,"email":"peancharoen.pslcp3@gmail.com","name":"Nattanin Peancharoen","nickname":"center","avatar":"//www.gravatar.com/avatar/359ab189ab83534aa79972668f5b3ff5?default=mm","roles":["admin"]},"access_list":null}


created_on: 2025-10-02 16:16:59
modified_on: 2025-10-02 16:16:59
object_type: proxy-host
action: updated
meta:
  {"id":6,"created_on":"2025-09-19 14:14:45","modified_on":"2025-09-19 14:17:39","owner_user_id":1,"domain_names":["pma.np-dms.work"],"forward_host":"phpmyadmin","forward_port":80,"access_list_id":0,"certificate_id":"11","ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"client_max_body_size 128m;\r\n\r\nadd_header X-Frame-Options \"SAMEORIGIN\" always;\r\nadd_header X-Content-Type-Options \"nosniff\" always;\r\nadd_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\r\nadd_header Permissions-Policy \"camera=(), microphone=(), geolocation=()\" always;\r\n\r\nproxy_set_header Host $host;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Real-IP $remote_addr;\r\n\r\nproxy_buffering off;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-10-02 16:19:31
modified_on: 2025-10-02 16:19:31
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:16:07","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:19:36
modified_on: 2025-10-02 16:19:36
object_type: proxy-host
action: disabled
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:19:32","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"map\" directive is not allowed here in /data/nginx/proxy_host/3.conf:73\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":0,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:19:38
modified_on: 2025-10-02 16:19:38
object_type: proxy-host
action: enabled
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:19:36","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"map\" directive is not allowed here in /data/nginx/proxy_host/3.conf:73\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":1,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false,"certificate":{"id":7,"created_on":"2025-09-17 13:47:37","modified_on":"2025-09-17 13:47:48","owner_user_id":1,"is_deleted":false,"provider":"letsencrypt","nice_name":"lcbp3.np-dms.work","domain_names":["lcbp3.np-dms.work"],"expires_on":"2025-12-16 05:49:14","meta":{}},"owner":{"id":1,"created_on":"2025-09-17 09:48:29","modified_on":"2025-09-17 09:52:39","is_disabled":false,"email":"peancharoen.pslcp3@gmail.com","name":"Nattanin Peancharoen","nickname":"center","avatar":"//www.gravatar.com/avatar/359ab189ab83534aa79972668f5b3ff5?default=mm","roles":["admin"]},"access_list":null}


created_on: 2025-10-02 16:22:56
modified_on: 2025-10-02 16:22:56
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:19:38","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:24:08
modified_on: 2025-10-02 16:24:08
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:22:57","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:24:14
modified_on: 2025-10-02 16:24:14
object_type: proxy-host
action: disabled
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:24:08","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"map\" directive is not allowed here in /data/nginx/proxy_host/3.conf:73\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":0,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:24:18
modified_on: 2025-10-02 16:24:18
object_type: proxy-host
action: enabled
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:24:14","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"map\" directive is not allowed here in /data/nginx/proxy_host/3.conf:73\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":1,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false,"certificate":{"id":7,"created_on":"2025-09-17 13:47:37","modified_on":"2025-09-17 13:47:48","owner_user_id":1,"is_deleted":false,"provider":"letsencrypt","nice_name":"lcbp3.np-dms.work","domain_names":["lcbp3.np-dms.work"],"expires_on":"2025-12-16 05:49:14","meta":{}},"owner":{"id":1,"created_on":"2025-09-17 09:48:29","modified_on":"2025-09-17 09:52:39","is_disabled":false,"email":"peancharoen.pslcp3@gmail.com","name":"Nattanin Peancharoen","nickname":"center","avatar":"//www.gravatar.com/avatar/359ab189ab83534aa79972668f5b3ff5?default=mm","roles":["admin"]},"access_list":null}


created_on: 2025-10-02 16:24:22
modified_on: 2025-10-02 16:24:22
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:24:18","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:27:52
modified_on: 2025-10-02 16:27:52
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:24:22","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:31:26
modified_on: 2025-10-02 16:31:26
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:27:52","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:31:31
modified_on: 2025-10-02 16:31:31
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:31:26","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:38:30
modified_on: 2025-10-02 16:38:30
object_type: proxy-host
action: updated
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:31:31","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:39:25
modified_on: 2025-10-02 16:39:25
object_type: proxy-host
action: disabled
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:38:31","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"map\" directive is not allowed here in /data/nginx/proxy_host/3.conf:73\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":0,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:39:35
modified_on: 2025-10-02 16:39:35
object_type: proxy-host
action: deleted
meta:
  {"id":3,"created_on":"2025-09-17 10:30:42","modified_on":"2025-10-02 16:39:25","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":7,"ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ========================================\r\n# [Advanced Proxy Host] - ตั้งค่าระดับ Host\r\n# ========================================\r\n\r\n# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;","meta":{"letsencrypt_agree":false,"dns_challenge":false,"nginx_online":false,"nginx_err":"nginx: [emerg] \"map\" directive is not allowed here in /data/nginx/proxy_host/3.conf:73\nnginx: configuration file /etc/nginx/nginx.conf test failed\n"},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":false,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:43:15
modified_on: 2025-10-02 16:43:15
object_type: proxy-host
action: created
meta:
  {"forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000,"advanced_config":"","domain_names":["lcbp3.np-dms.work"],"allow_websocket_upgrade":true,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"http2_support":true,"hsts_enabled":true,"meta":{"letsencrypt_agree":false,"dns_challenge":false},"locations":[{"path":"/health","advanced_config":"","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"block_exploits":false,"caching_enabled":false,"hsts_subdomains":false,"owner_user_id":1}


created_on: 2025-10-02 16:44:13
modified_on: 2025-10-02 16:44:13
object_type: proxy-host
action: updated
meta:
  {"id":7,"created_on":"2025-10-02 16:43:15","modified_on":"2025-10-02 16:43:15","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:52:24
modified_on: 2025-10-02 16:52:24
object_type: certificate
action: created
meta:
  {"provider":"letsencrypt","domain_names":["npm.np-dms.work"],"meta":{"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"letsencrypt_certificate":{"cn":"npm.np-dms.work","issuer":"C = US, O = Let's Encrypt, CN = E8","dates":{"from":1759370031,"to":1767146030}}},"owner_user_id":1,"nice_name":"npm.np-dms.work"}


created_on: 2025-10-02 16:52:25
modified_on: 2025-10-02 16:52:25
object_type: proxy-host
action: updated
meta:
  {"id":8,"created_on":"2025-10-02 16:52:08","modified_on":"2025-10-02 16:52:08","owner_user_id":1,"domain_names":["npm.np-dms.work"],"forward_host":"npm","forward_port":81,"access_list_id":0,"certificate_id":12,"ssl_forced":false,"caching_enabled":false,"block_exploits":true,"advanced_config":"","meta":{"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":false,"forward_scheme":"http","enabled":true,"locations":[],"hsts_enabled":false,"hsts_subdomains":false}


created_on: 2025-10-02 16:52:26
modified_on: 2025-10-02 16:52:26
object_type: proxy-host
action: created
meta:
  {"domain_names":["npm.np-dms.work"],"forward_scheme":"http","forward_host":"npm","forward_port":81,"block_exploits":true,"allow_websocket_upgrade":true,"access_list_id":0,"ssl_forced":false,"http2_support":false,"meta":{"letsencrypt_email":"peancharoen.pslcp3@gmail.com","letsencrypt_agree":true,"dns_challenge":false,"nginx_online":true,"nginx_err":null},"advanced_config":"","locations":[],"caching_enabled":false,"hsts_enabled":false,"hsts_subdomains":false,"owner_user_id":1}


created_on: 2025-10-02 16:54:30
modified_on: 2025-10-02 16:54:30
object_type: proxy-host
action: updated
meta:
  {"id":7,"created_on":"2025-10-02 16:43:15","modified_on":"2025-10-02 16:44:14","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:55:44
modified_on: 2025-10-02 16:55:44
object_type: proxy-host
action: updated
meta:
  {"id":7,"created_on":"2025-10-02 16:43:15","modified_on":"2025-10-02 16:54:30","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;\n","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:56:32
modified_on: 2025-10-02 16:56:32
object_type: proxy-host
action: updated
meta:
  {"id":7,"created_on":"2025-10-02 16:43:15","modified_on":"2025-10-02 16:55:44","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\n\r\n# ===== Security headers ระดับ Host =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\n# เปิด HSTS เมื่อมั่นใจว่าทุก subdomain ใช้ HTTPS เท่านั้น\r\n# add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;\n","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:57:58
modified_on: 2025-10-02 16:57:58
object_type: proxy-host
action: updated
meta:
  {"id":7,"created_on":"2025-10-02 16:43:15","modified_on":"2025-10-02 16:56:33","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== นิยามตัวแปรสำหรับ WebSocket =====\r\nmap $http_upgrade $connection_upgrade {\r\n    default upgrade;\r\n    ''      close;\r\n}\r\n\r\n# ===== Proxy headers พื้นฐาน =====\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE =====\r\nproxy_set_header Upgrade    $http_upgrade;\r\nproxy_set_header Connection $connection_upgrade;\r\nproxy_read_timeout 300s;\r\nproxy_send_timeout 300s;\r\nproxy_redirect off;\r\n\r\n# ===== คุกกี้ (ตัวเลือก - ปกติไม่จำเป็น) =====\r\n# proxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers =====\r\nadd_header X-Content-Type-Options nosniff always;\r\nadd_header X-Frame-Options SAMEORIGIN always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;\n","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


created_on: 2025-10-02 16:58:38
modified_on: 2025-10-02 16:58:38
object_type: proxy-host
action: updated
meta:
  {"id":7,"created_on":"2025-10-02 16:43:15","modified_on":"2025-10-02 16:57:59","owner_user_id":1,"domain_names":["lcbp3.np-dms.work"],"forward_host":"dms_frontend","forward_port":3000,"access_list_id":0,"certificate_id":"7","ssl_forced":true,"caching_enabled":false,"block_exploits":false,"advanced_config":"# ===== ขนาดไฟล์/timeout ระดับ Host =====\r\nclient_max_body_size 200m;\r\nclient_body_timeout  60s;\r\nsend_timeout         60s;\r\n\r\n# ===== Proxy headers พื้นฐาน (ส่งให้ backend ทุกตัว) =====\r\n# ที่นี่จะเป็นที่กำหนด header หลักเพียงแห่งเดียว\r\nproxy_set_header Host              $host;\r\nproxy_set_header X-Real-IP         $remote_addr;\r\nproxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\r\nproxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n# ===== WebSocket/SSE header ระดับ Host =====\r\n# พร้อมสำหรับทุก location ที่อาจต้องใช้ WebSocket\r\nproxy_set_header Upgrade           $http_upgrade;\r\nproxy_set_header Connection        \"upgrade\"; # ใช้ \"upgrade\" โดยตรงจะเสถียรกว่า\r\n\r\n# ===== สำคัญสำหรับคุกกี้ HttpOnly (ให้ทุก backend) =====\r\nproxy_pass_header Set-Cookie;\r\n\r\n# ===== Security headers ระดับ Host (ยอดเยี่ยมมากครับ) =====\r\nadd_header X-Content-Type-Options \"nosniff\" always;\r\nadd_header X-Frame-Options \"SAMEORIGIN\" always;\r\nadd_header Referrer-Policy \"no-referrer-when-downgrade\" always;\r\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\r\n","meta":{"letsencrypt_agree":false,"dns_challenge":false},"allow_websocket_upgrade":true,"http2_support":true,"forward_scheme":"http","enabled":true,"locations":[{"path":"/health","advanced_config":"proxy_set_header Host  $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto https;\nproxy_read_timeout 15s;\nproxy_send_timeout 15s;\n","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/_next/static/","advanced_config":"proxy_set_header Host $host;\nadd_header Cache-Control \"public, max-age=31536000, immutable\";","forward_scheme":"http","forward_host":"dms_frontend","forward_port":3000},{"path":"/api/","advanced_config":"# ===== CORS Configuration =====\nset $cors_allow_origin \"\";\nif ($http_origin ~* \"^https?://(localhost(:\\\\d+)?|127\\\\.0\\\\.0\\\\.1(:\\\\d+)?|np-dms\\\\.work|www\\\\.np-dms\\\\.work|lcbp3\\\\.np-dms\\\\.work)$\") {\n    set $cors_allow_origin $http_origin;\n}\n\nadd_header Vary \"Origin\" always;\nadd_header Access-Control-Allow-Credentials \"true\" always;\nadd_header Access-Control-Allow-Origin $cors_allow_origin always;\nadd_header Access-Control-Expose-Headers \"Content-Disposition,Content-Length\" always;\nadd_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\nadd_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n\n# ===== OPTIONS preflight =====\nif ($request_method = OPTIONS) {\n    add_header Content-Length 0;\n    add_header Content-Type text/plain;\n    add_header Access-Control-Allow-Origin $cors_allow_origin always;\n    add_header Access-Control-Allow-Credentials \"true\" always;\n    add_header Access-Control-Allow-Methods \"GET, POST, PUT, PATCH, DELETE, OPTIONS\" always;\n    add_header Access-Control-Allow-Headers \"Authorization, Content-Type, Accept, Origin, Referer, User-Agent, X-Requested-With, Cache-Control, Pragma\" always;\n    return 204;\n}","forward_scheme":"http","forward_host":"dms_backend","forward_port":3001}],"hsts_enabled":true,"hsts_subdomains":false}


