ProxyPass: Chuyển hướng URL thư mục sang cổng không chuẩn


13

Tôi đã tìm kiếm Google và không có nhiều thành công trong việc tìm câu trả lời. Tôi đang chạy một máy chủ trên Ubuntu và tôi đã cài đặt các chương trình sử dụng các cổng không chuẩn khác nhau. Mỗi người sử dụng một cổng khác nhau, trong trường hợp của tôi là 9090, 9091, 9092, 9093 và 9094. Tôi đã thiết lập một máy chủ apache và có một tên miền hiện có thể truy cập máy chủ của tôi thay vì phải nhập địa chỉ IP của tôi. Những gì tôi đang tìm kiếm là một cách để tạo các thư mục có thể trỏ đến các cổng khác nhau mà tôi đã liệt kê. Tôi muốn một cái gì đó như:

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

Một số cổng vượt qua SSL, một số thì không, tôi chỉ cần đặt chúng theo thứ tự (9090-9094) để dễ sử dụng. Tôi muốn lấy / app1 để trỏ đến cổng SSL 9090, / app2 để trỏ đến cổng SSL 9091 và / app3 để trỏ đến cổng không phải SSL 9092. Có cách nào đơn giản để làm điều đó không? Tôi đã thử thêm ProxyPass và những thứ tương tự dựa trên các bài đăng khác nhưng không có gì hoạt động. Tôi có cần thêm một trang web mới không?

Ngoài ra, nếu điều này liên quan đến việc chỉnh sửa các tệp mà tôi mong đợi, nó sẽ được đánh giá rất cao nếu bạn có thể liệt kê vị trí mặc định của tệp và nơi thêm các thứ. Tôi liên tục thấy các bài đăng nói rằng hãy thêm ProxyPass, vì vậy tôi chỉ cho rằng nó đã đi vào Virtualhost, nhưng tôi không hoàn toàn chắc chắn. Về cơ bản, tôi biết rất ít về thiết lập máy chủ web và tôi cần phải được đối xử như vậy.

Tôi xin lỗi vì bất kỳ thẻ không chính xác và tôi đánh giá cao thời gian bạn đã đọc bài viết và bất kỳ trợ giúp nào bạn có thể cung cấp.

EDIT: Để làm rõ, các ứng dụng đã có thể truy cập thông qua https://www.mydomain.com:9090, v.v. Tôi chỉ muốn một cách sử dụng https://www.mydomain.com/appNameđể đến cùng một vị trí / trang được xuất bản bởi các ứng dụng đó.

EDIT 2: Từ / etc / apache2 / site-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>

Bạn có thể đăng đầu ra của các chỉ thị cấu hình mà bạn đã sử dụng để thiết lập này không? Nếu họ đang ở trong một vhost, bạn có thể đăng toàn bộ vhost không?
Marcos Velazquez

Đặt cái gì lên? Các cổng? Tất cả các cổng được thiết lập thông qua giao diện người dùng của các chương trình tương ứng và tôi đang tìm cách để tránh phải nhập các cổng khi truy cập từng ứng dụng trên máy chủ của mình. Tôi có thể tìm hiểu các ứng dụng để xem những gì tôi có thể tìm thấy, nhưng các cổng thường chỉ được lưu trữ trong tệp config.ini
Serneum

Không phải như thế. Ý tôi là, nếu bạn đang sử dụng ProxyPass và những thứ khác, bạn hẳn đã đặt chúng bên trong một vhost, phải không? Nếu vậy, bạn có thể đăng toàn bộ nội dung vhost nếu có thể? tức là <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
Marcos Velazquez

Tôi đã hoàn tác hầu hết các thay đổi của mình để có được một bảng xếp hạng sạch sẽ trước khi yêu cầu giúp đỡ. Tôi vừa thêm tệp / etc / apache2 / site-Available / default tôi có và tôi đã thêm công cụ Proxy ở cuối dựa trên những gì tôi đã thấy ở nhiều trang web / tìm kiếm khác
Serneum

Câu trả lời:


13

Đảm bảo rằng các mô-đun apache sau được cài đặt và tải:

mod_proxy
mod_proxy_http
mod_ssl

Bạn có thể kiểm tra thông qua việc chạy lệnh sau với quyền root (giả sử httpd nằm trong $ PATH của bạn)

httpd -t -D DUMP_MODULES

Sau đó, hãy thử thay đổi cấu hình của bạn thành như sau:

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

Bây giờ proxy sẽ hoạt động nếu bạn truy cập http://localhost/app1hoặc http://mydomain.com/app1giả sử mydomain.com trỏ đến localhost.


Vấn đề tương tự như trước đây, tôi không biết làm thế nào để cài đặt mod_proxy và a2enmod mod_proxy nói rằng mod_proxy không tồn tại. Tôi sẽ tiếp tục tìm cách để có được 3 mod đó để tôi có thể làm mọi thứ hoạt động. Điều đó đang được nói, tôi có proxy, proxy_http và ssl đang chạy ngay bây giờ. Nếu đó là những gì tôi cần, thì giải pháp này dường như vẫn không hoạt động. Tôi nhận được một tin nhắn Cấm mà tôi cho rằng có thể liên quan đến "Cho phép từ 127.0.0.1" nhưng tôi không hoàn toàn chắc chắn
Serneum

Lưu ý bên, mydomain.com trỏ đến IP bên ngoài của tôi chứ không phải localhost. Tôi đã thử thay đổi localhost: 9090 thành ip: 9090 nhưng không thành công. Là "Cho phép từ" và " localhost " bên cạnh ProxyPass có liên quan đến máy chủ hoặc có liên quan đến những gì đang cố gắng truy cập không?
Serneum

Làm cho nó hoạt động bằng cách làm Cho phép từ tất cả tạm thời. Nhược điểm là không có css, v.v. xuất hiện trên trang, nhưng đó là vấn đề hoàn toàn riêng biệt mà tôi sẽ tự mình xem xét. Cảm ơn.
Serneum

Tôi cần thêm tập tin cấu hình nào 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

Tài sản trang không hiển thị có thể không phải là một vấn đề riêng biệt. Lệnh ProxyPass ở đây chỉ áp dụng cho tài liệu (app1). Để thư mục Proxy app1 có tất cả nội dung của nó, hãy thêm dấu gạch chéo. ProxyPass /app1/ https://localhost:9090/và tương tự cho ProxyPassReverse nếu được sử dụng. Và thứ hai, thêm chuyển hướng RewriteRule: RewriteRule ^/app1$ /app1/ [R]as / app1 sẽ không được ủy quyền sau đó.
papo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.