Proxy của Nginx có thể được sử dụng để chuyển tiếp các kết nối đến các port khác ngoài HTTP/HTTPS. Nginx cung cấp các module như TCP/UDP load balancing và proxying để giúp bạn chuyển tiếp các kết nối đến các port khác trên cùng một máy chủ hoặc máy chủ khác.
Bạn có thể cấu hình Nginx để chuyển tiếp các kết nối đến các port khác nhau bằng cách sử dụng các block server trong file cấu hình. Điều này cho phép bạn cấu hình Nginx để chuyển tiếp các kết nối đến các ứng dụng như database hoặc server game.
Ví dụ để chuyển tiếp port 3306 từ server 192.168.13.201 tới server Nginx 192.168.13.205, bạn có thể sử dụng module TCP/UDP proxy của Nginx. Để làm điều này, bạn có thể thực hiện các bước sau:
Để cài đặt Nginx và module TCP/UDP proxy trên server Nginx, bạn có thể làm theo các bước sau:
Cập nhật hệ thống của bạn:
sudo apt update
sudo apt upgrade
Cài đặt Nginx:
sudo apt install nginx -y
Cài đặt module TCP/UDP proxy cho Nginx. Bạn có thể cài đặt thông qua apt bằng cách thêm repository của Nginx vào hệ thống và cài đặt package nginx-extras
. Lưu ý rằng package nginx-extras
sẽ bao gồm tất cả các module mà Nginx hỗ trợ, vì vậy bạn nên kiểm tra trước xem có bất kỳ module nào khác cần cài đặt hay không.
sudo add-apt-repository universe
sudo apt update
sudo apt install nginx-extras
Kiểm tra xem module TCP/UDP proxy đã được cài đặt hay chưa bằng cách kiểm tra các module của Nginx:
nginx -V
Trong output của lệnh trên, hãy tìm dòng –with-stream để xác nhận rằng module TCP/UDP proxy đã được cài đặt.
Sau khi hoàn tất các bước trên, Nginx và module TCP/UDP proxy đã được cài đặt trên server của bạn và bạn có thể bắt đầu cấu hình Nginx để sử dụng TCP/UDP proxy.
Mở file cấu hình chính của Nginx:
sudo vi /etc/nginx/nginx.conf
Hãy đưa đoạn block này vào nginx.conf, đây là là cấu hình của Nginx để chuyển tiếp lưu lượng TCP/UDP từ cổng (port) 13306 trên máy chủ Nginx đến cổng (port) 3306 trên máy chủ 192.168.13.201. Nó sử dụng module stream của Nginx để cho phép chuyển tiếp gói tin TCP/UDP giữa các máy chủ một cách hiệu quả và có thể được sử dụng để cân bằng tải, tăng tính sẵn sàng cho hệ thống và bảo mật hệ thống.
stream {
server {
listen 3306;
proxy_pass 192.168.13.201:3306;
}
}
Sử dụng lệnh nginx -t để kiểm tra xem có lỗi xảy ra ở phần cấu hình ở trên
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nếu không có lỗi gì bạn sử dụng lệnh dưới để áp dụng config.
nginx -s reload
Kiểm tra kết nối đến domain mysql.hoanghd.com.
$ ping mysql.hoanghd.com
PING mysql.hoanghd.com192.168.13.205 (192.168.13.205): 56 data bytes
64 bytes from 192.168.13.205: icmp_seq=0 ttl=64 time=0.840 ms
64 bytes from 192.168.13.205: icmp_seq=1 ttl=64 time=0.669 ms
64 bytes from 192.168.13.205: icmp_seq=2 ttl=64 time=0.661 ms
64 bytes from 192.168.13.205: icmp_seq=3 ttl=64 time=0.730 ms
64 bytes from 192.168.13.205: icmp_seq=4 ttl=64 time=0.740 ms
^C
--- mysql.hoanghd.com192.168.13.205 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.661/0.728/0.840/0.064 ms
Kết quả khi telnet domain mysql.hoanghd.com và port 3306.
$ telnet mysql.hoanghd.com 3306
Trying 192.168.13.205...
Connected to mysql.hoanghd.com192.168.13.205.
Escape character is '^]'.
Để cho MariaDB có thể truy cập từ xa (remote access), bạn có thể làm theo các bước sau:
- Sửa file cấu hình của MariaDB trên server để cho phép truy cập từ xa. Mở file cấu hình
/etc/mysql/mariadb.conf.d/50-server.cnf
bằng trình soạn thảo văn bản và tìm đến dòngbind-address
. Nếu dòng này có giá trị khác 127.0.0.1 (localhost) thì hãy sửa lại để nó có giá trị là0.0.0.0
để cho phép truy cập từ bất kỳ địa chỉ IP. - Tạo một user cho phép truy cập từ xa. Bạn có thể tạo một user mới và cấp quyền truy cập cho user đó. Ví dụ, để tạo một user có tên là
remoteuser
và password làpassword
và cho phép truy cập từ bất kỳ địa chỉ IP, bạn có thể sử dụng lệnh sau trên MariaDB:
GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
- Mở cổng truy cập của MariaDB trên firewall. Mặc định thì cổng truy cập của MariaDB là 3306, bạn cần mở cổng này trên firewall để cho phép truy cập từ xa.
Sau khi thực hiện các bước trên, bạn có thể truy cập vào MariaDB từ xa bằng cách sử dụng địa chỉ IP của server và cổng truy cập của MariaDB. Ví dụ:
mysql -u remoteuser -p -h mysql.hoanghd.com -P 3306
Trong đó, remoteuser là tên user bạn đã tạo, 192.168.1.100 là địa chỉ IP của server và 3306 là cổng truy cập của MariaDB. Bạn sẽ được yêu cầu nhập password cho user remoteuser để kết nối đến MariaDB.