NGinxとSSHを使用してローカルサービスを公開する方法


私の同僚の1つは、外部サービスにローカル実行アプリを公開する必要があります.単純な制約がありました-サービスが公開されたドメイン名は変更できません(空白でなければならないので)、そして、ドメインのサブドメインである必要があります.
彼らはすでに開発者のためのいくつかの仮想マシンが外部IPアドレスとSSHのアクセスを実行している.私はこのタスクを解決するためにそれらを使用して提案している-以下に適用することができるソリューションを見つけることができます.
何が必要でしょう.
  • LinuxとNGINXを使った公開サーバ(外部IP )
  • nginx設定( sudo/root )を変更するユーザとパーミッション
  • サーバのSSHアクセス
  • ドメイン名、例えばsome.domain.tld - サーバーの外部IPを指す.
  • の設定から始めましょう/etc/nginx/sites-available/some.domain.tld 書き込み:
    server {
      listen 80;
      listen [::]:80;
    
      gzip on;
      server_name         some.domain.tld;
    
      location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect off;
        proxy_set_header Host 127.0.0.1;
        proxy_set_header X-Original-Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
      }
    }
    
    
    この設定は、some.domain.tld サーバのローカルポート8080に.
    この設定を有効にするには、この設定をsites-enabled コマンドを使うディレクトリ
    ln -s /etc/nginx/sites-available/some.domain.tld /etc/nginx/sites-enabled/some.domain.tld
    
    
    nginxを再起動します.systemctl restart nginx . 現在ドメイン下some.domain.tld 訪問者は、メッセージ“悪いゲートウェイ”とエラーページが表示されます-すべての8080ポートがないためです.
    さて、SSHトンネルの電源で、リモートサーバー上の8080ポートをローカルマシン上のポートを指すようにします.
    ローカルサービスを公開するには、以下のコマンドを使います.
    ssh -N -R $PORT_ON_SERVER:localhost:$LOCAL_PORT $LOGIN@$SERVER
    
    ここで
  • $PortRange OnRankサーバはサーバ上で要求するポートです.
  • $LocalLum port -何かが動いているdevマシンのローカルポート.
  • $ログインと$ serverは、プロキシを走らせているサーバーのユーザ名とアドレスです.
  • ユーザ名がalice , サーバはsome.domain.tld ドメインとローカルサービスはポート4502の下で利用可能です.
    ssh -N -R 8080:localhost:4502 [email protected]
    
    そして、それはすべてです-ブラウザでドメインを開いた後に、我々は我々のローカルサービスを見ます.そして、インターネット上の誰もそれを表示することができますので、気を付けろ!