AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 633689
Accepted
resting
resting
Asked: 2014-10-06 10:40:04 +0800 CST2014-10-06 10:40:04 +0800 CST 2014-10-06 10:40:04 +0800 CST

为什么这个proxypass会影响所有域?

  • 772

我正在运行 Apache,并且在 apache 中有一个.conf文件,site-enabled如下所示。

<Virtualhost blog.example.com:80>
  ServerName blog.example.com
  ServerAdmin [email protected]
  ProxyRequests Off
  ProxyPass        /phpmyadmin !
  ProxyPass        /  http://localhost:2368/
  ProxyPassReverse /  http://localhost:2368/
</Virtualhost>

如您所见,我只希望blog.example.comProxyPass 命令处理命中。但是,它实际上影响了所有其他域example.com,other.example.com.

我在这里错过了什么吗?

如果这就是 ProxyPass 的工作方式,有没有办法告诉它在检测到物理文件和目录时忽略物理文件和目录?

启用其他站点(只有一个站点在 ruby​​ 下运行,其余的遵循第一种形式):

<VirtualHost other.example.com:80>
  ServerName other.example.com
  ServerAdmin [email protected]
  DocumentRoot /var/www/html/other
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


<Virtualhost other2.example.com:80>
  ServerName other2.example.com
  ServerAdmin [email protected]

  DocumentRoot /var/www/html/rails/other2/public
  <Directory /var/www/html/rails/other2/public>
  AllowOverride all
  Options -MultiViews
  Require all granted
  </Directory>
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  PassengerUser www-data
  PassengerAppEnv production
  PassengerRuby /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby
</Virtualhost>
apache-2.4
  • 2 2 个回答
  • 1401 Views

2 个回答

  • Voted
  1. Best Answer
    Vivek Thomas
    2014-10-06T12:15:11+08:002014-10-06T12:15:11+08:00

    在定义中使用 FQDN不是最佳实践VirtualHost,它可能会导致诸如此类的意外问题。我猜一些主机名在服务器内解析为与请求发送到的 IP 地址不同的 IP 地址。这可能会阻止 Apache 匹配正确的虚拟主机。

    因此,VirtualHost可以将所有虚拟主机的定义更改如下,这样我们就可以确保 Apache 匹配基于正确名称的虚拟主机。

    <VirtualHost *:80> 
         or
    <VirtualHost [insert public IP here]:80>
    

    需要注意的另一点是,如果您希望请求example.com由默认主机以外的虚拟主机提供服务,则需要一个ServerAlias mydomain指令。

    这个页面有更多关于基于名称的虚拟主机如何工作的细节——http: //httpd.apache.org/docs/current/vhosts/name-based.html

    • 1
  2. Giacomo1968
    2014-10-06T12:24:12+08:002014-10-06T12:24:12+08:00

    像这样调整你的配置。请注意我为VirtualHost指令设置的通配符。最好只使用通配符 ( *)VirtualHost指令。此外,我设置了一个ServerAlias以及间隔和格式化配置以便于阅读,这在调试此类问题时很有帮助。此外,我将mod_proxy配置设置为更接近我喜欢用于这些东西的标准公式。

    此外,通过运行检查您的虚拟主机设置的输出sudo apachectl -S以查看您可以看到的内容。

    <Virtualhost *:80>
    
      ServerName blog.example.com
      ServerAlias blog.example.com
      ServerAdmin [email protected]
    
      <IfModule mod_proxy.c>
        ProxyRequests Off
        ProxyPreserveHost On
    
        <Proxy *>
          AddDefaultCharset off
          Order deny,allow
          Allow from all
        </Proxy>
    
        ProxyPass        /phpmyadmin !
        ProxyPass        /  http://localhost:2368/
        ProxyPassReverse /  http://localhost:2368/
    
      </IfModule>
    
    </Virtualhost>
    
    <VirtualHost *:80>
    
      ServerName other.example.com
      ServerAlias other.example.com
      ServerAdmin [email protected]
    
      DocumentRoot /var/www/html/other
    
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    </VirtualHost>
    
    <Virtualhost *:80>
    
      ServerName other2.example.com
      ServerAlias other2.example.com
      ServerAdmin [email protected]
    
      DocumentRoot /var/www/html/rails/other2/public
    
      <Directory /var/www/html/rails/other2/public>
        AllowOverride all
        Options -MultiViews
        Require all granted
      </Directory>
    
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
    
      PassengerUser www-data
      PassengerAppEnv production
      PassengerRuby /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby
    
    </Virtualhost>
    
    • 1

相关问题

  • SELinux 阻止 Apache 写入文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve