- อยากได้แบบนี้หว่า แต่ก่อนใช้ apache มันทำง่ายมากๆ แล้ว Nginx มันจะง่ายเหมือนกันมั้ยหว่า
- เค้าเรียกว่า
HTTP Authentication
- ก่อนอื่นเครื่องเราต้องติดตั้ง Nginx ก่อนนะครับ โดยดูวิธีติดตั้งได้จากโพสนี้
Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support (LEMP) On Debian Wheezy
- เมื่อ Nginx เราพร้อมแล้วมาคอนฟิกกัน
Step 1: Apache Utils
- เราจะใช้ htpasswd สำหรับสร้าง user และ password ที่เข้ารหัสนะ สำหรับ http authen นี้เลย โดยเราต้องติดตั้ง apache2-utils ก่อนจึงจะใช้งาน htpasswd ได้
sudo apt-get install apache2-utilsStep 2: Create User and Password
- เราสามารถใช้พาธอื่น ที่ไม่ใช่พาธตามตัวอย่างนี้ก็ได้นะ และ ไฟล์เก็บ user และ passwd เราสามารถใช้ .mypasswd เพื่อซ่อนไฟล์นี้ด้วยก็น่าจะดี แต่ตัวอย่างนี้ ขอแสดงแบบง่ายๆ พอ
sudo htpasswd -c /etc/nginx/mypasswd myuser
- มันจะขึ้นรอให้เรากรอกพาสเวิร์ดด้วย
New password:
Re-type new password:
Adding password for user myuser
- โครงสร้างที่มีการเก็บบันทึกใน /etc/nginx/mypasswd จะได้ประมาณนี้
user:passwd_encrypedStep 3: Update Nginx configuration
- คอนฟิก host เราซะหน่อย
sudo vi /etc/nginx/sites-available/myhost
- เพิ่ม 2 บรรทัดนี้ เข้าไปใน config ของ site หรือ alias ที่เราต้องการใช้ http authen
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/mypasswd;
- ในคอนฟิกโฮสเราจะได้ประมาณนี้ (เราสามารถนำ 2 บรรทัดนี้ไปวางไว้ใน alias ก็ได้นะ)
server {Step 4: Restart Nginx
listen portnumber;
server_name ip_address;
location / {
root /var/www/mywebsite.com;
index index.html index.htm;
auth_basic "Restricted"; #For Basic Auth
auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
}
}
- ตามอ้างอิงเค้าบอกให้ reload แต่เราจะ restart เลย
sudo /etc/init.d/nginx restart
อ้างอิง
- ผู้โพสอ้างอิงบน Debian 7 Wheezy แต่จากอ้างอิงบน เว็บ digitalocean เค้าอ้างอิงบน Ubuntu 12.10 นะครับพี่น้อง
- https://www.digitalocean.com/community/tutorials/how-to-set-up-http-authentication-with-nginx-on-ubuntu-12-10
- http://www.howtoforge.com/basic-http-authentication-with-nginx