Рейтинг:0

Блокировка порта 8080 от прямого IP-доступа, но разрешение доступа через домен (Virtualhost Config)

флаг it

Я хочу получить доступ к веб-серверу из http://subdomain2.domain.com с URL, но не с прямого IP (http://1.1.1.1:8080). Например, ниже мой файл конфигурации виртуального хоста (site2.conf) в /etc/apache2/доступные сайты/ но раздел <VirtualHost *:8080> ... </VirtualHost> вроде не влияет.

<VirtualHost *:80>
    ServerName subdomain2.domain.com
    ServerAlias www.subdomain2.domain.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/site2
    Keepalive On

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine on
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
    RewriteRule .* ws://localhost:8080%{REQUEST_URI} [P]

    ProxyPreserveHost On
    ProxyPass "/stream" ws://localhost:8080/ retry=0 timeout=5
    ProxyPass "/" http://localhost:8080/ retry=0 timeout=5
    ProxyPassReverse / http://localhost:8080/
</VirtualHost>

<VirtualHost *:8080>
        ServerName 1.1.1.1:8080
        ServerAlias  2001:0db8:85a3:0000:0000:8a2e:0370:7334:8080
        DocumentRoot /var/www/site2
        <Location />
            Require all denied
        </Location>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

За http://subdomain1.domain.com, я уже успешно реализовал это в (000-default.conf) в /etc/apache2/доступные сайты/ и он отлично работает после добавления раздела <VirtualHost *:80> ... </VirtualHost>. Ниже приведен код для справки:

<VirtualHost *:80>
        ServerName subdomain1.domain.com
        ServerAlias www.subdomain1.domain.com
        ServerAdmin [email protected]
        DocumentRoot /var/www

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
        ServerName 1.1.1.1
        ServerAlias  2001:0db8:85a3:0000:0000:8a2e:0370:7334
        DocumentRoot /var/www
        <Location />
            Require all denied
        </Location>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Рейтинг:1
флаг jp

Поскольку вы обратное проксирование к локальный: 8080, вероятно, какой-то сервер приложений, отличный от Apache, прослушивает порт 8080. Вы не можете контролировать это другое программное обеспечение, добавляя конфигурации VirtualHost в Apache. Вместо этого измените настройки этого программного обеспечения и заставьте его прослушивать только локальную петлю (локальный хост) вместо каждого интерфейса.


Как оказалось, другим сервером является Gotify, мы можем проконсультироваться с его документация по конфигурации.

gotify/server ищет файлы конфигурации по следующим путям

./config.yml /etc/gotify/config.yml

сервер:
  keepaliveperiodseconds: 0 # ...
  listenaddr: "" # адрес для привязки, оставьте пустым для привязки ко всем адресам
  port: 80 # порт для http сервера

В этом config.yml, изменить параметр server.listenaddr к 127.0.0.1 поскольку по умолчанию он прослушивает все адреса.

Bilal Bhatti avatar
флаг it
Да, приложение называется Gotify, и я могу изменить его порт с 8080 на 9000 (или другой). Однако я не уверен, что вы имеете в виду, заставляя его слушать только петлю. Вы имеете в виду, что я должен использовать localhost:80 вместо *:80?
флаг jp
Я обновил свой ответ, чтобы охватить конфигурацию Gotify.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.