【问题标题】:mac osx - apache - one website, multiple ports?mac osx - apache - 一个网站,多个端口?
【发布时间】:2014-01-30 02:05:29
【问题描述】:

我正在笔记本电脑上构建一个需要通过自定义主机名引用的网站,而不是远离 localhost 目录。

我需要通过http://project.name/在本地引用此站点

我通过在我的主机文件中创建一个新条目以及在我的 apache vhosts conf 中创建一个虚拟主机条目来实现此功能。

我还想允许外部用户查看我的网站。我想他们需要通过我的 IP 地址和端口号来访问它。

我该怎么做?

我假设需要将“Listen 8080”添加到 apache.conf。

我是否创建一个新的 vhosts 条目来复制我之前为本地主机名创建的条目,但名称为“localhost:8080”? (这闻起来很糟糕)。

或者可以修改现有的 vhosts 条目以在 localhost:8080 上进行监听吗?

为了进一步澄清,我需要:

 http://project.name and
 http://localhost:8080 

引用相同的、确切的站点。这是因为我需要使用自定义主机名创建站点。例如,我的图像引用需要以“/images/example.jpg”开头,而不是相对引用。这是因为技术部门必须做 10 分钟的额外工作。 :^)

谢谢, 斯科特

【问题讨论】:

  • 为什么一定要8080,80(http的默认值)已经在使用了吗?
  • 我两者都需要。我正在使用 8080 访问我的站点,使用基于 ip:port 路由,而不是相对。我可以将 localhost 更改为指向我正在处理的这个站点,但是我会弄乱我计算机上的所有其他站点。
  • 我不完全理解,但您似乎找到了解决方案,所以一切都很好。只是为了确保 - 你知道你可以在 same 端口上运行无限数量的网站,只要它是相同的服务器软件? localhost:80 是一个虚拟主机(就像现在一样),project.name:80 另一个,someotherproject.name:80 又一个

标签: macos apache vhosts


【解决方案1】:

不要在 vhost 指令中指定主机(例如 localhost),而是使用 *。这将允许您通过不同的主机名访问该虚拟主机。如果您从块中完全省略 ServerName,这将允许您通过 http://localhost:8080 访问同一站点,或者通过 http://<ip address>:8080 从机器外部访问同一站点。

NameVirtualHost *:8080

<VirtualHost *:8080>
   # your stuff
</VirtualHost>

然后,您可以通过 Listen 指令本身调整这些虚拟主机使用的接口:

Listen 8080              # you can hit the sites from outside your machine, OR
Listen 127.0.0.1:8080    # no access outside your machine

使用apachectl -S 仔细检查您的虚拟主机设置。

【讨论】:

  • 我可以有一个允许两者的虚拟主机条目吗?即
  • 不,那必须是 2 个条目。但是,您可以使用Include 在这些条目之间共享相同的配置。正在编辑答案...
  • 实际上,如果您简单地省略ServerName,那么无论使用什么主机名访问端口8080,您都会访问该虚拟主机。即http://localhost:8080http://192.168.0.123:8080 都将使用它虚拟主机。
  • 您还可以拥有多个具有相同host:port 签名的&lt;VirtualHost&gt; 条目...Apache 将根据ServerName 选择正确的条目。
  • httpd.apache.org/docs/2.4/vhosts/examples.html#intraextra 意味着我的 VirtualHost 中只能有两个 url 模式。
猜你喜欢
  • 2016-10-28
  • 2015-01-17
  • 2012-04-28
  • 2021-04-18
  • 2016-01-17
  • 2013-06-06
  • 2012-09-30
  • 2022-11-06
  • 2016-10-07
相关资源
最近更新 更多