ProxyPass: Dizin URL'sini standart olmayan bağlantı noktasına yönlendir


13

Google’da arama yapıyorum ve bir yanıt bulma konusunda pek başarılı olamadım. Ubuntu'da bir sunucu çalıştırıyorum ve çeşitli standart dışı bağlantı noktaları kullanan programlar yüklü. Her biri farklı bir bağlantı noktası kullanır, benim durumumda 9090, 9091, 9092, 9093 ve 9094'tür. Bir apache sunucusu ayarladım ve şimdi IP adresimi yazmak yerine sunucuma ulaşabilecek bir alan adına sahibim. Aradığım, listelediğim farklı bağlantı noktalarını gösterebilecek dizinler oluşturmanın bir yoludur. Gibi bir şey istiyorum:

https://www.mydomain.com/app1
https://www.mydomain.com/app2
http://www.mydomain.com/app3

Bazı portlar SSL üzerinden, bazıları değil, sadece kullanım kolaylığı için onları (9090-9094) sıraya koydum. / App1'in 9090 numaralı SSL bağlantı noktasını, / app2'nin 9091 numaralı SSL bağlantı noktasını göstermesini ve / app3'ün SSL olmayan 9090 numaralı bağlantı noktasını göstermesini istiyorum. Bunu yapmanın basit bir yolu var mı? Diğer yazılara dayalı ProxyPass ve benzeri eklemeyi denedim ama hiçbir şey işe yaramadı. Yeni bir site eklemem gerekir mi?

Ayrıca, eğer beklediğim dosyaları düzenlemeyi içeriyorsa, dosyanın varsayılan konumunu ve bir şeyler nereye ekleyeceğinizi takdir ederseniz çok takdir edilecektir. ProxyPass eklemek için mesajlar görmeye devam ettim, bu yüzden sadece VirtualHost'un içine girdiğini varsaydım, ama tamamen emin değildim. Temel olarak, web sunucusu kurulumu hakkında çok az şey biliyorum ve bu şekilde davranılmam gerekiyor.

Yanlış etiketler için özür dilerim ve yazıyı okumak için harcadığınız zamanı ve verebileceğiniz yardımı takdir ediyorum.

DÜZENLEME: Açıklığa kavuşturmak için, uygulamalara zaten erişilebilir https://www.mydomain.com:9090, vb. Ben sadece https://www.mydomain.com/appNamebu uygulamalar tarafından yayınlanan aynı konuma / sayfaya ulaşmak için kullanmak için bir yol istiyorum .

DÜZENLEME 2: / etc / apache2 / sites-available / default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /app1 https://localhost:9090/
    ProxyPassReverse /app1 https://localhost:9090/
</VirtualHost>

Bunu ayarlamak için kullandığınız yapılandırma yönergelerinin çıktısını kaydedebilir misiniz? Eğer bir hayaletin içindeyse, tüm hayaleti gönderebilir misin?
Marcos Velazquez

Ne ayarladın? Limanlar? Bağlantı noktaları tüm ilgili programların UI aracılığıyla ayarlanır ve sunucumdaki her uygulamaya erişirken bağlantı noktalarını yazmak zorunda kalmamak için bir yol arıyorum. Neler bulabileceğimi görmek için uygulamaları inceleyebilirim, ancak bağlantı noktaları genellikle sadece bir config.ini dosyasında saklanır
Serneum

Hayır bu değil. Demek istediğim, ProxyPass ve diğer şeyleri kullanıyorsanız, onları bir hayaletin içine koymuş olmalısınız, değil mi? Öyleyse, mümkünse tüm vhost içeriğini gönderebilir misiniz? ie <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
Marcos Velazquez

Yardım istemeden önce temiz bir sayfa almak için değişikliklerimin çoğunu geri aldım. Az önce / etc / apache2 / sites-available / default dosyasını ekledim ve çeşitli diğer sitelerde / aramalarda gördüklerime dayanarak Proxy içeriklerini ekledim
Serneum

Yanıtlar:


13

Aşağıdaki apache modüllerinin kurulu ve yüklenmiş olduğundan emin olun:

mod_proxy
mod_proxy_http
mod_ssl

Aşağıdaki komutu root olarak çalıştırarak kontrol edebilirsiniz (httpd'nin $ PATH değerinde olduğu varsayılarak)

httpd -t -D DUMP_MODULES

Daha sonra yapılandırmanızı aşağıdaki şekilde değiştirmeyi deneyin:

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
SSLProxyEngine on
ProxyPass /app1 https://localhost:9090
ProxyPassReverse /app1 https://localhost:9090

Mydomain.com adresini ziyaret ederseniz http://localhost/app1veya http://mydomain.com/app1localhost'u işaret ederseniz, proxy artık çalışmalıdır .


Daha önce olduğu gibi aynı sorun, nasıl mod_proxy yüklemek için hiçbir fikrim yok ve a2enmod mod_proxy mod_proxy var diyor. İşleri halletmek için bu 3 modu nasıl alacağımı aramaya devam edeceğim. Olduğu söyleniyor, ben şu anda çalışan proxy, proxy_http ve ssl var. Eğer ihtiyacım olan buysa, bu çözüm hala işe yaramıyor gibi görünüyor. "127.0.0.1'den izin ver" ile ilişkili olabileceğini düşündüğüm bir Yasak mesaj alıyorum ama tam olarak emin değilim
Serneum

Yan not, mydomain.com, yerel ana makineme değil harici IP adresime işaret ediyor. Ben localhost: 9090 benim ip: 9090 değiştirmeyi denedim ama hiçbir başarı ile. "İzin ver" ve " localhost ", ProxyPass öğesinin yanındaki sunucuya veya erişmeye çalışana göre mi?
Serneum

Geçici olarak İzin Ver'i çalıştırarak çalıştırabilirsiniz. Dezavantajı, sayfada hiçbir css, vb görünür, ancak bu kendi başıma bakacağım tamamen ayrı bir konudur. Teşekkürler.
Serneum

Hangi yapılandırma dosyasına eklemem gerekiyor ProxyRequests Off <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> SSLProxyEngine on ProxyPass /app1 https://localhost:9090 ProxyPassReverse /app1 https://localhost:9090?
kiltek

Gösterilmeyen sayfa varlıkları ayrı bir sorun olmayabilir. Buradaki ProxyPass yönergesi yalnızca belge (uygulama1) için geçerlidir. Tüm içeriği ile Proxy app1 dizinine, sondaki eğik çizgiler ekleyin. ProxyPass /app1/ https://localhost:9090/ve aynı şekilde ProxyPassReverse için de kullanılır. İkincisi, RewriteRule yönlendirmesini ekleyin: RewriteRule ^/app1$ /app1/ [R]/ app1 daha sonra proxy yapılmaz.
papo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.