Instruktaż/Tutorial Tunelowanie aplikacji Web na dowolny host i port 80

Silas Mariusz

rm -rf /
Help us, GOD!
5 Kwiecień 2008
10 168
31
2 248
153
39
Nowy Sącz
forum.qnap.net.pl
QNAP
TS-x77
Ethernet
1 GbE
upload_2015-9-9_0-59-40.png


Moduł http proxy umożliwia lokalne świadczenie treści drugich w obrębie wirtualnych hostów lub wybranych katalogów. Efektem tego może być np. panel serwera QNAP z portu 8080 uruchomiony w pod domenie qts.domena.pl, ale przy użyciu domyślnego portu serwera Web. Może to być też monitorix, rtorrent, stacja wirtualizacji i wiele wiele innych aplikacji.

  1. Do tego celu konieczna jest prawidłowa instalacja: How-To - QNAP od środka, czyli grzebiemy w linuchu - Jak sobie ułatwić?
  2. Po wykonaniu instrukcji z powyższego przewodnika należy upewnić się, że Optware zostało ponownie uruchomione. W tym celu zrestartuj Optware.
  3. Połącz się do terminala/konsoli SHELL serwera QNAP
  4. Wykorzystamy Optware i jego katalog do przetrzymywania modyfikacji plików konfiguracyjnych serwera Web (Apache). W tym celu wykonaj następujące:
    Bash:
    OPTWARE_DIR=$(getcfg -f /etc/config/qpkg.conf Optware Install_Path)
    cd $OPTWARE_DIR
    mkdir -p root/apache
    cd $OPTWARE_DIR/root/apache
  5. Następnie utwórz plik apache-custom.conf i wprowadź jego odpowiednią zawartość. W tym celu w konsoli shell wpisz:
    Bash:
    vi apache-custom.conf
    Przekopiuj poniższy kod do schowka:
    Kod:
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    <VirtualHost *:80>
    	#ProxyRequests Off
    	#ProxyVia Off
    	#ProxyPreserveHost Off
    
    	#RewriteEngine on
    	#RewriteLog "/share/Web/rewrite_https.log"
    	#RewriteLogLevel 3
    	#RewriteRule ^/(user-settings\.json.*)$  http://localhost:8080/cgi-bin/$1 [P]
    	#RewriteRule ^/(userConfig\.cgi.*)$  http://localhost:8080/cgi-bin/$1 [P]
    
    	<Proxy *>
    	#	AddDefaultCharset off
    		Order deny,allow
    		Allow from all
    	</Proxy>
    
    	# ### NOTKA
    	# Nazwa hosta pod ktora ma byc widoczny Panel
    	ServerName qts.spietrza24.eu
    	DocumentRoot "/share/Web/qts"
    	ProxyPass /  http://localhost:8080/
    	ProxyPassReverse / http://localhost:8080/
    </VirtualHost>
    W uruchomionym edytorze vi w programie PuTTY naciśnij kolejno:
    1. i (insert) - aby móc wprowadzić tekst
    2. Kliknij prawym przyciskiem myszy w oknie edytora, aby wkleić powyższy tekst ze schowka
    3. ESC - aby zakończyć wprowadzanie
    4. Shift + : - aby wydać komendę
    5. wq - aby zapisać (write) i wyjść (quit)
    UWAGA: Pamiętaj, aby w polu ServerName znajdowała się nazwa hosta domeny, którą chcesz tunelować do panelu QTS na porcie 8080.
  6. Utwórz plik append-apache-conf.sh i wprowadź jego odpowiednią zawartość. W tym celu w konsoli shell wpisz:
    Bash:
    vi append-apache-conf.sh
    Przekopiuj poniższy kod do schowka:
    Bash:
    #!/bin/sh
    
    OPTWARE_DIR=$(getcfg -f /etc/config/qpkg.conf Optware Install_Path)
    
    # log procedure
    log=$OPTWARE_DIR/root/apache/append-apache-conf.log
    log(){
    	/bin/echo "$(/bin/date '+%F %T.%3N') $1" >> $log
    }
    log "***** Starting append-apache-conf.sh *****"
    
    # env variables
    apache_conf=/etc/config/apache/apache.conf
    apache_custom_conf=$OPTWARE_DIR/root/apache/apache-custom.conf
    
    # log myself
    exec >> $log 2>&1
    
    # modify apache_conf
    /bin/grep -q $apache_custom_conf $apache_conf
    if [ $? -eq 0 ]
    	then
    		log "$apache_conf already includes $apache_custom_conf. Nothing to be done."
    	else
    		log "$apache_conf does NOT include $apache_custom_conf. Including now."
    		/bin/echo "Include $apache_custom_conf" >> $apache_conf
    		log "Restarting apache ..."
    		/etc/init.d/Qthttpd.sh restart
    fi
    
    log "***** End of append-apache-conf.sh *****"
    /bin/sync
    /bin/sleep 1
    W uruchomionym edytorze vi w programie PuTTY naciśnij kolejno:
    1. i (insert) - aby móc wprowadzić tekst
    2. Kliknij prawym przyciskiem myszy w oknie edytora, aby wkleić powyższy tekst ze schowka
    3. ESC - aby zakończyć wprowadzanie
    4. Shift + : - aby wydać komendę
    5. wq - aby zapisać (write) i wyjść (quit)
  7. Utwórz plik restart-apache.sh i wprowadź jego odpowiednią zawartość. W tym celu w konsoli shell wpisz:
    Bash:
    vi restart-apache.sh
    Przekopiuj poniższy kod do schowka:
    Bash:
    #!/bin/sh
    
    OPTWARE_DIR=$(getcfg -f /etc/config/qpkg.conf Optware Install_Path)
    
    # log procedure
    log=$OPTWARE_DIR/root/apache/append-apache-conf.log
    log(){
    	/bin/echo "$(/bin/date '+%F %T.%3N') $1" >> $log
    }
    
    # log myself
    exec >> $log 2>&1
    
    log "Restarting apache ..."
    /etc/init.d/Qthttpd.sh restart
    W uruchomionym edytorze vi w programie PuTTY naciśnij kolejno:
    1. i (insert) - aby móc wprowadzić tekst
    2. Kliknij prawym przyciskiem myszy w oknie edytora, aby wkleić powyższy tekst ze schowka
    3. ESC - aby zakończyć wprowadzanie
    4. Shift + : - aby wydać komendę
    5. wq - aby zapisać (write) i wyjść (quit)
  1. Z konsoli na szybko utwórz kolejny plik:
    Bash:
    echo -e '#!/bin/sh\n\n/usr/local/apache/bin/apache -t -f /etc/config/apache/apache.conf' > test-apache-conf.sh
  2. Następnie nadaj plikom *.sh prawa do uruchomienia:
    Bash:
    chmod +x *.sh
  3. Edytuj plik /etc/init.d/Optware.sh:
    1. Bash:
      mcedit /etc/init.d/Optware.sh
    2. Znajdź linię: /bin/echo "Enable Optware/ipkg"
      W tym celu naciśnij F7 i wpisz: Enable Optware - wielkość liter może mieć znaczenie:
      find_enable_optware.png
    3. Dodaj przed znalezioną linią:
      Bash:
      sh $QPKG_DIR/root/apache/append-apache-conf.sh
      qnap_optware_apache_custom_conf.png
    4. Naciśnij F2 i zapisz plik. Wyjść przyciskiem ESC
  4. Sprawdź czy działa restartując Optware:
    Bash:
    /etc/init.d/Optware.sh restart

    W przypadku problemów, poprawność składni pliku konfiguracyjnego sprawdzisz poleceniem:
    Bash:
    sh $(getcfg -f /etc/config/qpkg.conf Optware Install_Path)/root/apache/test-apache-conf.sh
  5. Panel zarządzania QTS powinien być już dostępny pod hostem http://qts.domena.pl na porcie 80
    :)

Przykłady:
Panel zarządzania systemem operacyjnym QTS - standardowo pracuje na porcie 8080.
upload_2015-9-9_1-1-41.png


Monitorix - instalowany automatycznie z najnowszą wersją paczki rtorrent - standardowo pracuje na porcie 6007.
upload_2015-9-9_1-21-51.png


Rtorrent-QNAP - standardowo pracuje na porcie 6009.
upload_2015-9-9_1-31-57.png

upload_2015-9-9_1-31-35.png


/share/CACHEDEV..._DATA/.qpkg/Optware/root/apache/apache-custom.conf
Kod:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80>
	<Proxy *>
		Order deny,allow
		Allow from all
	</Proxy>

	ServerName qts.domena.pl
	DocumentRoot "/share/Web/"

	ProxyPass /	 http://localhost:8080/
	ProxyPassReverse / http://localhost:8080/
</VirtualHost>

<VirtualHost *:80>
	<Proxy *>
		Order deny,allow
		Allow from all
	</Proxy>

	ServerName rtorrent.domena.pl
	DocumentRoot "/share/Web"

	ProxyPass /	 http://localhost:6009/
	ProxyPassReverse / http://localhost:6009/
</VirtualHost>

<VirtualHost *:80>
	ProxyRequests Off
	<Proxy>
		Order deny,allow
		Allow from all
	</Proxy>

	ServerName monitorix.domena.pl
	DocumentRoot "/share/Web"

	ProxyPass /	 http://localhost:6007/
	ProxyPassReverse / http://localhost:6007/
	ProxyPreserveHost On
</VirtualHost>