Назад | Перейти на главную страницу

Apache 2.2, доступ к серверу на localhost: 3000 через ip.ip.ip.ip / folder

Ожидание: localhost:3000 работает под ip.ip.ip.ip/folder

Реальность: ip.ip.ip.ip/folder открывается, но содержит ip.ip.ip.ip/css/style.css то же самое для JS и т. д. ссылок.

Цель: что-то (apache conf?) Переписывает материал таким образом, что все ссылки ip.ip.ip.ip/folder/css/style.css и JS и так далее.

Кажется, что он должен работать как localhost: 3000 не использует URL-адреса родственников, но почему-то это не так.

Что я не понимаю и как это исправить?

Сайт:

<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>

        RewriteEngine On
        RewriteLog "/var/log/apache2/rewrite.log"
        RewriteLogLevel 3
        RewriteRule ^/folder/(.*)$ http://127.0.0.1:3000/$1 [L,P]
        ProxyPassReverse /folder/ http://127.0.0.1:3000/

        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
</VirtualHost>

Загруженные модули apache (возможно, их слишком много, я пробовал много всего):

core_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
proxy_module (shared)
proxy_html_module (shared)
proxy_http_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)
substitute_module (shared)

редактировать:

Вывод Rewritelog:

(2) init rewrite engine with requested uri /folder/
(3) applying pattern '^/folder/(.*)$' to uri '/folder/'
(2) rewrite '/folder/' -> 'http://127.0.0.1:3000/'
(2) forcing proxy-throughput with http://127.0.0.1:3000/
(1) go-ahead with proxy request proxy:http://127.0.0.1:3000/ [OK]
(2) init rewrite engine with requested uri /css/style.css
(3) applying pattern '^/folder/(.*)$' to uri '/css/style.css'
(1) pass through /css/style.css

Редактировать:

Нашел пару хороших ресурсов и решений:

Тем не менее, все еще борюсь с тем, чтобы не переписывать URL-адреса внутри CSS.

Вы, кажется, неправильно понимаете правила ProxyPassReverse и Rewrite. Это должно сработать для вас:

RewriteEngine on
RewriteRule ^/folder/(.*)$ http://localhost:3000/$1 [L,P]
ProxyPassReverse /folder/ http://localhost:3000/

На самом деле нет необходимости использовать mod_rewrite для проксирования здесь ProxyPass /folder/ http: // локальный: 3000 / будет вполне достаточно.

Для проблемы css / js / image у вас есть несколько вариантов. Безусловно, лучше всего изменить базовое приложение, чтобы оно отображалось как '/ folder /', а не '/', тогда вы можете просто использовать

ProxyPass /folder/ http://localhost:3000/folder/

И все это должно просто работать, приложение, css и т. Д., Все это покрывается одной директивой. Если вы не можете этого сделать, вы можете использовать такие вещи, как ProxyPass /css/ http: // локальный: 3000 / css /, но, конечно, вам нужно сделать это для каждой используемой папки.

Наконец, вы можете перейти на apache v2.4 и использовать mod_proxy_html для «исправления» путей URI в HTML / css / js напрямую.