Nếu bạn cần truy cập các port của mình từ ngoài Internet hoặc truy cập web của bạn, có nhiều công cụ bạn có thể sử dụng. Ví dụ: ngrok , pagekite

Hoặc bạn có thể truy cập thông qua một máy chủ (server) nếu bạn có sẵn hoặc không muốn sử dụng các dịch vụ bên thứ 3 mất phí. Nó có thể hỗ trợ SSL và hoạt động sau NAT. Bài viết này sẽ hướng dẫn bạn tự build một service giống như ngork thông qua ssh tunnel.

Thiết lập máy chủ

Bạn sẽ cần một máy chủ nginx được cài đặt trên VPS của mình và một tên miền trỏ đến nó, chẳng hạn như dev.example.com.

Sau đó thêm cấu hình nginx này (hoặc tương tự):

server {
    listen 80;
    server_name dev.example.com;
    rewrite ^ https://dev.example.com$request_uri? permanent;
}

server {
    listen 443 ssl http2;

    server_name dev.example.com;

    access_log off;
    error_log off;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Host $http_host;
    }

    ssl_certificate /path/to/ssl/dev.example.com/fullchain.pem;
    ssl_certificate_key /path/to/ssl/dev.example.com/privkey.pem;
}

Phần thú vị là proxy_pass. Nó sẽ trỏ dev.example.com đến local port 8000 trên máy chủ.

Đảm bảo rằng dòng sau có trong /etc/ssh/sshd_config và restart SSH server nếu cần:

GatewayPorts clientspecified

Thiết lập local

Bây giờ bạn cần tạo một đường hầm SSH giữa máy local của bạn và máy chủ.

Trên máy tính của bạn, hãy đặt chức năng này bên trong .bashrc của bạn (hoặc .zshrc nếu bạn đang sử dụng ZSH). Trong ví dụ này, me là một user linux từ xa để truy cập SSH vào VPS.

function devtunnel {
    ssh -nNT -R "127.0.0.1:8000:localhost:${1}" [email protected]
}

Điều này sẽ chuyển tiếp cổng từ xa 8000 đến cổng local được chỉ định như một đối số; -n ngăn việc đọc từ stdin, -N có nghĩa là bạn không muốn thực hiện các lệnh từ xa, -T vô hiệu hóa tty và -R có nghĩa là chuyển tiếp cổng ngược lại.

Hoặc bạn không muốn cài đặt chức năng này trong terminal, bạn có thể chạy lệnh trực tiếp như sau:

ssh -nNT -R "127.0.0.1:8000:localhost:<port local>" [email protected]

Sử dụng

Sau khi thiết lập này, việc hiển thị máy chủ phát triển cục bộ của bạn rất dễ dàng. Nếu bạn đang chạy máy chủ web ở local của mình trên cổng 3000. Để có thể truy cập nó từ internet, hãy chạy lệnh này:

devtunnel 3000

Sau đó, bạn (hoặc người khác) có thể truy cập dev.example.com để truy cập vào web đang chạy ở local của bạn.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments