0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Thiết lập Reverse Proxy trên Linux với Apache

Đăng vào 6 tháng trước

• 4 phút đọc

Hướng dẫn thiết lập Reverse Proxy trên Linux

Trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập Reverse Proxy trên Linux sử dụng Apache và Tomcat. Reverse Proxy là một kỹ thuật giúp chuyển tiếp các yêu cầu từ client đến server khác, giúp cải thiện hiệu suất và khả năng mở rộng của ứng dụng.

Mục lục

Yêu cầu trước khi bắt đầu

Để bắt đầu, bạn cần chuẩn bị:

  1. Cài đặt và cấu hình một cụm Tomcat:
    • Thiết lập các biến môi trường trong ~/.bashrc:
    bash Copy
    export TOMCAT1_HOME=<thư mục tomcat1 của bạn>
    export TOMCAT2_HOME=<thư mục tomcat2 của bạn>
  2. Kiểm tra xem Apache đã được cài đặt:
    bash Copy
    sudo systemctl status apache2

Tạo một website mới

Tiếp theo, chúng ta cần tạo một website mới:

  1. Đặt thư mục home của website trong ~/.bashrc:
    bash Copy
    export MYSITE_HOME="/var/sites/mysite"
    source ~/.bashrc
  2. Tạo các thư mục cần thiết cho website:
    bash Copy
    sudo mkdir -p $MYSITE_HOME/conf
    sudo mkdir -p $MYSITE_HOME/www/html
  3. Tạo trang index.html:
    html Copy
    <!DOCTYPE html>
    <html>
    <head>
        <title>Trang mặc định của MySite</title>
    </head>
    <body>
        Chào mừng đến với MySite
    </body>
    </html>

Tạo Virtual Host cho website

Để Apache phục vụ cho website mới, chúng ta cần tạo một Virtual Host:

  1. Sao chép cấu hình mặc định từ Apache:
    bash Copy
    sudo cp /etc/apache2/sites-available/000-default.conf $MYSITE_HOME/conf/localhost.conf
  2. Thêm cấu hình cho Virtual Host:
    apache Copy
    <VirtualHost *:80>
        ServerName localhost
        DocumentRoot ${MYSITE_HOME}/www/html
        <Directory ${MYSITE_HOME}/www/>
            Options Indexes FollowSymLinks
            AllowOverride None
            Require all granted
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

Cài đặt và cấu hình mod_jk

Để giao tiếp giữa Apache và Tomcat, chúng ta sẽ sử dụng mod_jk:

  1. Bật AJP trong Tomcat:
    • Mở server.xml và bỏ dấu <!--:
    xml Copy
    <Connector protocol="AJP/1.3" port="8009" redirectPort="8443" />
  2. Tạo các file cấu hình cho mod_jk:
    bash Copy
    sudo cp /etc/apache2/mods-available/jk.conf $MYSITE_HOME/conf/jk.conf
    sudo cp /etc/apache2/mods-available/jk.load $MYSITE_HOME/conf/jk.load
  3. Cấu hình workers.properties:
    properties Copy
    worker.list=worker1, worker2, lb
    worker.worker1.type=ajp13
    worker.worker1.host=localhost
    worker.worker1.port=8009
    worker.worker2.type=ajp13
    worker.worker2.host=localhost
    worker.worker2.port=9009
    worker.lb.type=lb
    worker.lb.balance_workers=worker1, worker2
  4. Cấu hình uriworkermap.properties:
    properties Copy
    /examples/*=lb
  5. Kích hoạt mod_jk:
    bash Copy
    sudo a2enmod local-jk
    sudo systemctl reload apache2

Kiểm tra Load Balancing và Sticky Sessions

Bây giờ chúng ta sẽ kiểm tra xem load balancing hoạt động tốt không:

  1. Gửi yêu cầu đến servlet SessionExample:
    bash Copy
    curl http://localhost/examples/servlets/servlet/SessionExample
    • Kiểm tra xem yêu cầu có được phân phối đều giữa hai Tomcat không.
  2. Đảm bảo rằng sticky sessions hoạt động:
    • Cài đặt jvmRoute cho worker1worker2 trong server.xml:
    xml Copy
    <Engine jvmRoute="worker1" ...>
    <Engine jvmRoute="worker2" ...>

Thực hành về Fail-over

Để kiểm tra khả năng fail-over:

  1. Gửi yêu cầu và lưu lại session ID.
  2. Dừng Tomcat đầu tiên và gửi yêu cầu lại với session ID đó:
    bash Copy
    curl --cookie "JSESSIONID=<your_id>" http://localhost/examples/servlets/servlet/SessionExample

Mẹo tối ưu hiệu suất

  • Cấu hình Cache: Sử dụng cache để tăng tốc độ truy cập cho ứng dụng.
  • Giám sát và phân tích: Sử dụng các công cụ giám sát để theo dõi hiệu suất của server.
  • Tối ưu hóa mã nguồn: Đảm bảo mã nguồn của bạn được tối ưu hóa để giảm thiểu thời gian xử lý.

Câu hỏi thường gặp

  1. Reverse Proxy là gì?
    • Reverse Proxy là một máy chủ đứng giữa client và server, chuyển tiếp các yêu cầu và phản hồi.
  2. Tại sao nên sử dụng mod_jk?
    • mod_jk giúp Apache giao tiếp với Tomcat qua AJP, cung cấp hiệu suất cao và tính năng load balancing.

Kết luận

Bài viết đã hướng dẫn bạn cách thiết lập Reverse Proxy trên Linux với Apache và Tomcat. Hãy thử nghiệm với các cấu hình khác nhau và tối ưu hóa ứng dụng của bạn để đạt được hiệu suất tối đa. Nếu bạn gặp vấn đề, đừng ngần ngại hỏi trong cộng đồng phát triển!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào