nginx代理

เมื่อ webman ต้องการให้มีการเข้าถึงจากภายนอกโดยตรง แนะนำให้เพิ่ม nginx proxy เข้ามาข้างหน้า webman ซึ่งมีข้อดีดังนี้

  • ให้ nginx จัดการทรัพยากรแบบสถิต ทำให้ webman มุ่งเน้นไปที่การจัดการตรรกะทางธุรกิจ
  • อนุญาตให้ webman หลายตัวใช้พอร์ต 80 และ 443 ร่วมกัน โดยแยกแยะไซต์ต่างๆ ด้วยชื่อโดเมน เพื่อให้สามารถติดตั้งไซต์หลายไซต์บนเซิร์ฟเวอร์เครื่องเดียว
  • สามารถทำให้ php-fpm และ webman ทำงานร่วมกันได้
  • nginx proxy รองรับ ssl สำหรับการใช้ https โดยง่ายและมีประสิทธิภาพมากขึ้น
  • สามารถกรองคำร้องที่ไม่ถูกต้องจากภายนอกได้อย่างเข้มงวด

nginx代理示例

upstream webman {
    server 127.0.0.1:8787;
    keepalive 10240;
}

server {
  server_name 站点域名;
  listen 80;
  access_log off;
  # 注意,这里一定是webman下的public目录,不能是webman根目录
  root /your/webman/public;

  location ^~ / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-e $request_filename){
          proxy_pass http://webman;
      }
  }

  # 拒绝访问所有以 .php 结尾的文件
  location ~ \.php$ {
      return 404;
  }

  # 允许访问 .well-known 目录
  location ~ ^/\.well-known/ {
    allow all;
  }

  # 拒绝访问所有以 . 开头的文件或目录
  location ~ /\. {
      return 404;
  }

}

โดยทั่วไปแล้ว การตั้งค่าข้างต้น นักพัฒนาจำเป็นต้องปรับค่า server_name และ root ให้ตรงกับค่าที่แท้จริง ส่วนฟิลด์อื่นๆ ไม่จำเป็นต้องตั้งค่า

注意
โดยเฉพาะอย่างยิ่ง ควรตั้งค่า ตัวเลือก root ให้ชี้ไปยังไดเรกทอรี public ภายใต้ webman เท่านั้น ห้ามตั้งให้ชี้ตรงไปที่ไดเรกทอรี webman มิฉะนั้นไฟล์ทั้งหมดของคุณอาจถูกดาวน์โหลดหรือเข้าถึงจากภายนอก รวมถึงการตั้งค่าฐานข้อมูลและไฟล์ที่สำคัญอื่นๆ