socket.io server (wss://) behind nginx proxy server

สามารถพบได้ทั่วๆ ที่ใครก็จะแนะนำให้ใส่ config ประมาณนี้ เพื่อทำ reversed proxy ไปยัง socket.io ด้านหลัง

        location ^~ /socket.io/ {
                proxy_pass https://127.0.0.1:8089;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_set_header Host $host;
        }

พอเราทำตามนี้กลับเจอ error WebSocket connection to 'wss://your-domain.com/socket.io/' failed: Error during WebSocket handshake: 'Upgrade' header is missing นี้ใน Console ของ Browser

Continue reading “socket.io server (wss://) behind nginx proxy server”

DirectAdmin (CentOS 7) + munin dynamic zoom

ปกติเวลา setup เครื่อง ผมจะปิดการใช้งาน cgi ของ apache อยู่แล้ว เพื่อความสบายใจว่าไม่ต้องกังวลกับช่องโหว่ของ cgi บลาๆ. แต่ล่าสุดมีเครื่องนึงที่อยากจะซูมดูกราฟของ munin แต่มันติดว่าทำไม่ได้ :'( ก็เลยลองพยายามที่จะปรับให้มันใช้ได้ดู. Continue reading “DirectAdmin (CentOS 7) + munin dynamic zoom”

Installing Apache 2.4, PHP 5.5 Windows 7

  1. สร้างโฟลเดอร์ c:/wamp/
  2. ดาวน์โหลดไฟล์ httpd-2.4.7-win32-VC11.zip (ถ้าอยากได้เวอร์ชั่นล่าสุดให้ดูที่เว็บนี้ http://www.apachelounge.com/download/) บทความนี้เลือกใช้ win32 เพราะว่า VC11 x86 Thread Safe ในเว็บ PHP มันยังเป็น experimental อยู่
  3. เอาไฟล์ของ httpd ที่โหลดในข้อก่อนหน้า มา Extract ไว้ที่พาท
    c:/wamp/apache2.4_win32/
  4. ดาวน์โหลดไฟล์ php-5.5.7-Win32-VC11-x86.zip (ถ้าอยากได้เวอร์ชั่นล่าสุดหาดูจากที่นี่ http://windows.php.net/download/ ให้เลือกอันที่เป็น VC11 Thread Safe ส่วนถ้า x64 มันไม่ experimental แล้ว ก็น่าโหลดเอามาใช้นะ แต่ต้องเปลี่ยน httpd ให้เป็น win64 ด้วย)
  5. สร้างโฟลเดอร์ c:/wamp/php-5.5.7_win32/ เอาไฟล์ที่โหลดก่อนนี้มาใส่พาทนี้
  6. แก้ไฟล์ c:/wamp/apache2.4_win32/conf/httpd.conf
    Replace: c:/Apache24/htdocs
    With: c:/wamp/www
  7. เติม code นี้เข้าไปที่ด้านล่างสุด
    LoadModule php5_module "c:/wamp/php-5.5.7/php5apache2_4.dll"
    AddHandler application/x-httpd-php .php
    PHPIniDir "c:/wamp/php-5.5.7"
    DirectoryIndex index.html index.php
  8. Load Module ดังนี้
    1. mod_expires.so
    2. mod_headers.so
    3. mod_rewrite.so
    4. mod_socache_shmcb.so
    5. mod_ssl.so
    6. mod_vhost_alias.so
  9. Uncomment บรรทัดนี้ Include conf/extra/httpd-ssl.conf
  10. แก้ไฟล์ c:/wamp/apache2.4_win32/conf/extra/httpd-ssl.conf
    1. SSLCertificateFile “C:\wamp\apache2.4_win32\conf\server.crt”
    2. SSLCertificateKeyFile “C:\wamp\apache2.4_win32\conf\server.key”
    3. DocumentRoot “c:/wamp/www”
  11. ไปที่โฟลเดอร์ php-5.5.7_win32 แล้ว copy php.ini-development ตั้งชื่อไฟล์เป็น php.ini
  12. แก้ไฟล์ php.ini
    1. extension_dir = “C:/wamp/php-5.5.7_win32/ext”
    2. date.timezone = “Asia/Bangkok”
    3. enable extensions
      1. php_curl.dll
      2. php_gd2.dll
      3. php_imap.dll
      4. php_mbstring.dll
      5. php_mysql.dll
      6. php_mysqli.dll
      7. php_openssl.dll
      8. php_tidy.dll
    4. เติมโค๊ดนี้ที่ท้ายไฟล์
      zend_extension="c:\wamp\php-5.5.7_win32\ext\dbg-php-5.5.dll"
      [debugger]
      debugger.enabled=on
      debugger.profiler_enabled=on
      debugger.hosts_allow= 127.0.0.1 localhost ::1 127.0.0.1
      debugger.hosts_deny=ALL
      debugger.ports=7869
  13. copy ไฟล์ dbg-php-5.5.dll จากในโฟลเดอร์โปรแกรม phpED ไปใส่ตรง c:\wamp\php-5.5.7_win32\ext\ ด้วย
  14. เปิด cmd โดย run as administrator
    1. รันคำสั่ง
    2. cd /wamp/apache2.4_win32/conf/
    3. ..\bin\openssl.exe req -config openssl.cnf -x509 -nodes -subj “/C=TH/ST=Bangkok/L=Bangkok/O=localhost/OU=SEC/CN=localhost” -days 1825 -newkey rsa:2048 -keyout server.key -out server.crt
    4. c:\wamp\apache2.4_win32\bin\httpd.exe -k install
  15. (ข้อนี้ข้ามไปก็ได้ ไว้ถ้ามีปัญหาค่อยกลับมาทำ)
    ใน Environment Variables ตรง System Variables
    ที่ตัวแปร PATH ให้เติม C:\wamp\apache2.4_win32\; C:\wamp\apache2.4_win32\bin ต่อเข้าไป

 

วิธีการ configure vhost

<VirtualHost 127.0.0.1:80>
  DocumentRoot "C:/wamp/site2/"
  ServerName www.site2.local
  ServerAlias site2.local www.site2.local
</VirtualHost>
<VirtualHost 127.0.0.1:443>
  DocumentRoot "C:/wamp/site2/"
  ServerName www.site2.local
  ServerAlias site2.local www.site2.local
  SSLEngine on
  SSLCertificateFile "c:/Wamp/Apache2.4_win32/conf/server.crt"
  SSLCertificateKeyFile "c:/Wamp/Apache2.4_win32/conf/server.key"
</Virtual>

ถ้าในกรณีที่ DocumentRoot ของ VirtualHost อยู่คนละพาทกับ DocumentRoot หลักใน httpd.conf ให้ไปเพิ่ม <Directory … > ….. </Directory> ใน httpd.conf ด้วย