2017-03-17 88 views
6

Cel: Zmniejsz liczbę dev - cykl zwrotny za pomocą serwera deweloperów App Engine. Do mojego użytku musi to być dostępny jako publiczny adres HTTPS. Serwer deweloperów App Engine obsługuje tylko protokół HTTP.Appengine - Lokalny serwer dev z adresem https

Sposób wykonania: Użyj ngrok, aby ujawnić lokalne środowisko dev jako publicznie dostępny adres https.

Reverse proxy z nginx z https na http.

To wydaje się możliwe, ale dla mojego życia nie mam działającej konfiguracji.

Pracuję z App Engine Standard Java na osx.

Inne robocze rozwiązania i pomysły są mile widziane. Z pewnością istnieje sposób, aby to zrobić.

+0

Wykonaj następujące odpowiedzi, które mogą pomóc w spełnieniu żądania: włączyć serwer deweloperski AppEngine z HTTPS? –

+0

Btw, możesz rzucić okiem na poprzedni wpis SO dotyczący tego: http://stackoverflow.com/questions/8849020/gae-dev-appserver-py-over-https –

Odpowiedz

1

Używam Nginx jako proxy z siebie podpisanego certyfikatu dla mojego projektu https://debtstracker.io/

Oto moja nginx config. Będziesz także musiał dodać rekord yourproject.local do pliku hosts.

server { # This servers dynamic content of DebtsTracker.io project over HTTPS 
      listen   443; 
      server_name  debtstracker.local; 
      ssl     on; 
      ssl_certificate  /etc/ssl/certs/debtstracker-local.crt; 
      ssl_certificate_key /etc/ssl/private/debtstracker-local.key; 

      location /app/ { 
        proxy_pass http://localhost:8100/; 
        proxy_set_header Host $http_host; 
      } 

      location/{ 
        proxy_pass http://127.0.0.1:8080; 
        proxy_set_header Host $http_host; 
      } 
    } 

Pierwsza lokalizacja jest przeznaczona dla devsera GAE, a druga dla projektu jonowego.

Oto plik bash używać do generowania certyfikatów:

#!/usr/bin/env bash 
# https://www.accuweaver.com/2014/09/19/make-chrome-accept-a-self-signed-certificate-on-osx/ 

# https://gist.github.com/jessedearing/2351836 

# Run using "sudo" 

echo "Generating an SSL private key to sign your certificate..." 
openssl genrsa -des3 -out debtstracker-local.key 1024 

echo "Generating a Certificate Signing Request..." 
openssl req -new -key debtstracker-local.key -out debtstracker-local.csr 

echo "Removing pass-phrase from key (for nginx)..." 
cp debtstracker-local.key debtstracker-local.key.org 
openssl rsa -in debtstracker-local.key.org -out debtstracker-local.key 
rm debtstracker-local.key.org 

echo "Generating certificate..." 
openssl x509 -req -days 365 -in debtstracker-local.csr -signkey debtstracker-local.key -out debtstracker-local.crt 

echo "Copying certificate (debtstracker-local.crt) to /etc/ssl/certs/" 
mkdir -p /etc/ssl/certs 
cp debtstracker-local.crt /etc/ssl/certs/ 

echo "Copying key (debtstracker-local.key) to /etc/ssl/private/" 
mkdir -p /etc/ssl/private 
cp debtstracker-local.key /etc/ssl/private/ 

Nadzieja to pomaga. Zajęło mi trochę czasu, żeby to ustawić.

+0

To całkowicie działa dla mnie. Teraz mogę używać lokalnego serwera deweloperskiego jako publicznego adresu internetowego i nie płacić za godziny podczas pracy. Również szybsze niż wdrażanie. Gdybyśmy mieli coś na kształt błyskawicznego biegu, naprawdę byśmy gotowali. Załóżmy, że JRebel zadziała – Patrick

+0

@Patrick, co to jest natychmiastowe uruchomienie? –

+1

Natychmiastowe uruchamianie to narzędzie programistyczne dla systemu Android, które stopniowo aktualizuje zmiany kodu Java w uruchomionej aplikacji. Byłoby wspaniale mieć coś podobnego do appengine – Patrick

2

Jeśli masz tylko jeden moduł, do którego musisz dotrzeć przez SSL, możesz po prostu użyć tego jednego: https://github.com/cameronhunter/local-ssl-proxy. Instalacja i użytkowanie są bardzo proste. Wystarczy zmienić port docelowy na port modułu, a następnie przeglądać go za pośrednictwem protokołu HTTPS do portu źródłowego. Jeśli potrzebujesz dotrzeć do wielu modułów, musisz uruchomić go wiele razy z różnymi parametrami (portami).

0

ngrok obsługuje HTTPS do dowolnego portu HTTP, dzięki czemu można po prostu użyć ngrok do pełnomocnika domenę https do portu serwera dev GAE

Jeśli masz opłacone konta, możesz rekordy CNAME konfiguracji używać własnego domeny

ngrok http -hostname=dev.example.com 8080