Cài đặt proxy nginx cho tyk open source api gateway
Bạn phải chuẩn bị vps, server đã cài đặt sẵn Tyk API Gateway. Bài viết này sẽ hướng dẫn bạn cách dùng nginx làm proxy để expose các chức năng của Tyk API như (gateway, dashboard, developer) với port 80 (HTTP).
- Cài đặt nginx service
Login vào vps bằng ssh terminal hoặc putty, ghỏ lệnh cài đặt nginx.
1 |
# apt-get install nginx -y |
- Sau khi cài đặt xong, tiến hành cấu hình file nginx.conf
1 |
# cd /etc/nginx/ |
Copy 1 bản backup của file config gốc lại để dành nếu có sự cố thì restore lại.
1 |
# cp nginx.conf nginx.conf_backup |
Sau đó copy toàn bộ nội dung dưới đây chép đè vào file nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; use epoll; } http { # Enumerate all the Tyk servers here upstream tyk { server 127.0.0.1:5000; } include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; keepalive_timeout 65; proxy_read_timeout 200; sendfile on; tcp_nopush on; tcp_nodelay on; gzip on; gzip_min_length 1000; gzip_proxied any; gzip_types text/plain text/css text/xml application/x-javascript application/xml application/atom+xml text/javascript; proxy_next_upstream error; include /etc/nginx/sites-enabled/* ; } |
- Cấu hình virtualhost cho từng domain hoặc subdomain tương ứng.
Ví dụ ta cấu hình cho domain : wikivps.net, thì ta sẽ có 3 domain tương ứng như sau.
- tyk-gateway:8080 => api.wikivps.net
- tyk-dashboard:3000 => dashboard.wikivps.net
- tyk-portal:3000/portal => developer.wikivps.net/portal
Di chuyển vào thư mục /etc/nginx/sites-enabled
1 |
# cd /etc/nginx/sites-enabled |
Lần lượt tạo file với domain tương ứng và copy nội dung tương ứng với từng domain vào. Tạo file api.wikivps.net, và copy nội dung bên dưới vào.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
server { listen 80; server_name api.wikivps.net; gzip on; gzip_buffers 16 8k; gzip_comp_level 4; gzip_http_version 1.1; gzip_min_length 1280; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/bmp; gzip_vary on; # The Go application server location / { #rewrite /(.*) /API_LISTEN_PATH/$1 break; proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://127.0.0.1:8080; } } |
Tạo file dashboard.wikivps.net, và copy nội dung bên dưới vào.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
server { listen 80; server_name dashboard.wikivps.net; gzip on; gzip_buffers 16 8k; gzip_comp_level 4; gzip_http_version 1.1; gzip_min_length 1280; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/bmp; gzip_vary on; # The Go application server location / { #rewrite /(.*) /API_LISTEN_PATH/$1 break; proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://127.0.0.1:3000; } } |
Tạo file developer.wikivps.net, và copy nội dung vào.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
server { listen 80; server_name developer.wikivps.net; gzip on; gzip_buffers 16 8k; gzip_comp_level 4; gzip_http_version 1.1; gzip_min_length 1280; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/bmp; gzip_vary on; # The Go application server location ^~ / { rewrite ^ http://developer.wikivps.net/portal break; } location /portal { #rewrite /(.*) /API_LISTEN_PATH/$1 break; proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Scheme $scheme; proxy_pass http://127.0.0.1:3000; } } |
- Kiểm tra lại cấu hình nginx có đúng hay không:
Dùng lệnh
1 |
# nginx -t |
Kiểm tra cấu hình chính xác thì tiến hành restart lại service nginx.