สร้าง Reverse proxy บน IIS

Mititee
3 min readFeb 1, 2023

--

IIS (Internet Information Services) คืออะไร ?

IIS Server (Internet Information Services) คือ เว็บเซิร์ฟเวอร์ที่รันบนแพลตฟอร์ม Microsoft .NET ใน Windows OS IIS มีคุณลักษณะมากมาย โดยทั่วไป IIS ใช้โฮสต์แอ็พพลิเคชันเว็บ ASP.NET และเว็บไซต์แบบสแตติก นอกจากนี้ยังสามารถใช้เป็นเซิร์ฟเวอร์ FTP โฮสต์บริการ WCF และจะขยายไปยังโฮสต์แอ็พพลิเคชันเว็บที่สร้างขึ้นบนแพลตฟอร์มอื่น ๆ เช่น PHP

ที่มา : https://www.bestinternet.co.th/

Reverse proxy คืออะไร

Reverse proxy ใช้สำหรับเป็นฉากหน้าไว้คุยกับ network ภายนอก ทำหน้าที่เป็น load balancing และทำให้ระบบ high availability โดย reverse proxy จะรับ request มาจากภายนอกและส่งต่อให้ server ที่อยู่ภายใน ซึ่งผู้ใช้จะไม่รู้ได้ว่า web ที่เข้าใช้อยู่นี้ มี proxy หรือไม่

ที่มา: ความแตกต่างระหว่าง Proxy กับ Reverse Proxy | by Apipol Sukgler | golfapipol.me | Medium

ผมจะไม่ได้บอกถึงวิธีการติดตั้ง IIS บน Windows Server นะครับ คิดว่าน่าจะรู้กันอยู่แล้ว

สำหรับเครื่องมือที่ ต้องมี ในการทำ Reverse proxy

  1. URL Rewrite : The Official Microsoft IIS Site
  2. Application Request Routing : The Official Microsoft IIS Site

ทำการติดตั้ง Next ไปยาวๆ ครับ

แผนคร่าวๆ ที่จะลองทำนะครับ

ใน Docker ผมได้ลง Kibana ไว้นะครับ Port:5601 IP:192.1.3.118

  1. เปิด IIS ขึ้นมา แล้ว Add Website ครับ
  2. ใส่ข้อมูล Site name (ผมใช้เป็น Kibana)และ Path ให้เรียบร้อย *Path จะสร้าง Folder ใหม่เลยก็ได้ครับ
  3. Host name ใส่เป็น Url ที่เราต้องการ ในตัวอย่างเป็น kb.domain.com ครับ *domain.com คือชื่อของ โดเมนนะครับ แต่ละคนจะไม่เหมือนกัน. แล้วทำสอบว่าเข้าได้หรือไม่ **ตั้งค่า DNS Server ให้ชี้มาที่ Host Name ให้ถูกต้องด้วยนะครับ**

ถ้าถูกต้องจะเป็นแบบนี้ **ผมไม่ได้สร้าง อะไรไว้ใน Path จึงขึ้น Error ตามที่เห็น**

4. Click OK ครับ

ต่อมาเราจะไป เปิด ฟังก์ชั่น Proxy ครับ

  1. ไปที่ส่วน Root ของ IIS ครับ

2. จะเห็น Application Request Routing ให้ เข้าไปแล้ว ทางขวามือ จะมี เมนู Server Proxy Setting

3. Click เปิดใช้งาน

4. มาเลือก Site: Kibana เข้าไปที่หัวข้อ URL Rewrite

5. Click Add Rule หัวข้อ Inbound rules แล้วเลือก Blank rule

6. Setup ประมาณนี้ ของผมจะใช้ http://ip:Port/{R:0} ของเครื่องที่เป็น Docker นะครับ ตรงนี้ จะไม่เหมือนเหมือนให้เปลี่ยนตามที่ใช้งานนะครับ

คลิก Apply

7. กลับมาที่หน้าเว็บของเรา แล้ว Refresh ดูผลลัพธ์กัน

มาแล้ว !!

เสริม ถ้าต้องการทำ Site Https ก็สามารถตั้งค่า Site Binding ได้ ส่วนผมจะใช้ SSL จาก let’s encrypt ครับ

สรุป

เนื่องจากผมใช้ IIS เป็นหลัก และไม่อยากขึ้น Nginx อีกตัว เลยทำวิธีนี้ และงานส่วนมากของผมเป็นโปรเจคที่ไม่ใหญ่มาก เลยเอามาแชร์ เผื่อใคร แอบขี้เกียจเหมือนกัน ฮ่าๆๆ เป็นบทความแรก ยังไง ขออภัยถ้าอธิบายไม่ดีครับ

--

--