`
liyixing1
  • 浏览: 962019 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

绑定端口和IP,Listen 与VirtualHost指令

 
阅读更多
Apache启动时,会绑定本机上的地址和端口,然后等待请求的进入。默认情况下,它会监听本机的所有地址。但是,当需要监听特定的地址或端口或地址与端口的组合,或者需要对不同的IP地址、主机名、端口作出不同的响应(如使用虚拟主机)时,就必须明确指定。

Listen指令告诉服务器接只受来自特定端口(或地址+端口的组合)的请求。如果Listen指令仅指定了端口,则服务器会监听所有的IP地址;如果指定了地址+端口的组合,则服务器只监听来自此特定地址上特定端口的请求。使用多个Listen指令,可以指定在多个地址和端口上进行监听。

例如:使服务器在所有地址上同时接受来自端口80和8000的请求,可以这样写:

Listen 80
Listen 8000
接受来自两个指定的地址+端口的组合:

Listen 192.170.2.1:80
Listen 192.170.2.5:8000
IPv6地址必须用方括号括起来:

Listen [2001:db8::a00:20ff:fea7:ccea]:80


Listen 指令指令
语法 Listen [IP-address:]portnumber [protocol]
protocol表示协议。
比较完整的例子如
Listen 192.170.2.1:8443 https


VirtualHost指令
语法 <VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>
<VirtualHost>和</VirtualHost>用于封装一组仅作用于特定虚拟主机的指令。任何在虚拟主机配置中可以使用的指令也同样可以在这里使用。当服务器接受了一个特定虚拟主机的文档请求时,它会使用封装在<VirtualHost>配置段中的指令。Addr可以是:

虚拟主机的IP地址
虚拟主机IP地址对应的完整域名
字符"*",仅与"NameVirtualHost *"配合使用以匹配所有的IP地址
字符串"_default_",与基于IP的虚拟主机联用以捕获所有没有匹配的IP地址

示例

<VirtualHost 10.1.2.3>
ServerAdmin webmaster@host.foo.com
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
</VirtualHost>
IPv6的地址必须放入方括号中指定,否则作为可选项的端口号将无法确定。一个IPv6的示例如下:

<VirtualHost [2001:db8::a00:20ff:fea7:ccea]>
ServerAdmin webmaster@host.example.com
DocumentRoot /www/docs/host.example.com
ServerName host.example.com
ErrorLog logs/host.example.com-error_log
TransferLog logs/host.example.com-access_log
</VirtualHost>

<VirtualHost>的使用并不影响Apache的监听地址。你需要使用Listen来确保Apache正在监听正确的地址。

另外VirtualHost的地址和端口,必须在主服务的监听范围里面,如果你设置的虚拟主机端口是88,但是主服务程序只监听了81和82端口,那么这个设置无效的。

例子,我的配置中
Listen 80
Listen 81
<VirtualHost 192.168.1.101>
ServerAdmin liyixing1@gmail.com
DocumentRoot E:/www
ServerName liyixing.com
ErrorLog logs/liyixing.com-error_log
TransferLog logs/liyixing.com-access_log
</VirtualHost>

如上监听了两个端口,并且使用了一个虚拟服务器的配置,
http://127.0.0.1/
和http://127.0.0.1:81/
是一样的效果。


而访问地址
http://192.168.1.101/index.html
将进入到虚拟主机上面,这个时候访问的结果是403,所以要看结果从界面是看不出什么的,而应该看
logs/liyixing.com-error_log

logs/liyixing.com-access_log
可以发现这个时候请求发送到这个虚拟主机来了。

如果你需要在页面看出区别,则需要把虚拟主机的配置改成
<VirtualHost 192.168.1.101>
ServerAdmin liyixing1@gmail.com
DocumentRoot E:/www
ServerName liyixing.com
ErrorLog logs/liyixing.com-error_log
TransferLog logs/liyixing.com-access_log
Alias /www "E:/www"
<Directory "E:/www">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>
</VirtualHost>

这样开启查看权限才行。
如果这么配置同时也能通过
http://192.168.1.101/www/
来访问,因为这个时候已经同时开启了一个/www的访问

如果你希望只能通过
http://192.168.1.101
而http://192.168.1.101/www/无效的话,则需要把
Alias /www "E:/www"
这句去掉,也就是改成
<VirtualHost 192.168.1.101>
ServerAdmin liyixing1@gmail.com
DocumentRoot E:/www
ServerName liyixing.com
ErrorLog logs/liyixing.com-error_log
TransferLog logs/liyixing.com-access_log
<Directory "E:/www">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>
</VirtualHost>

另外这里的
Directory 可以配置在外部,而不是VirtualHost 内部
也就是
<Directory "E:/www">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>
<VirtualHost 192.168.1.101>
ServerAdmin liyixing1@gmail.com
DocumentRoot E:/www
ServerName liyixing.com
ErrorLog logs/liyixing.com-error_log
TransferLog logs/liyixing.com-access_log
</VirtualHost>
也是可以的,之所以放在VirtualHost 是为了和VirtualHost 主机和目录之间一一对应,来做统一的管理。
分享到:
评论
1 楼 石不易 2016-04-29  
非常详细的注解~

相关推荐

    Apache配置多端口及Apache端口修改方法

    这样,Apache将同时监听这三个端口,但为了使每个端口对应不同的网站,需要使用`&lt;VirtualHost&gt;`容器来指定每个端口对应的网站配置。 #### 三、创建虚拟主机 虚拟主机允许在同一台服务器上托管多个独立的网站,每个...

    一个IP建多个Web站点

    每个`VirtualHost`块定义了一个独立的站点,包括IP地址、端口和主机头等信息。例如: ```apacheconf &lt;VirtualHost *:80&gt; ServerName www.example1.com DocumentRoot /var/www/example1.com/public_html ... &lt;/...

    Mac Apache多端口的配置

    在`httpd-vhosts.conf`文件中,创建一个新的虚拟主机配置,指定端口、DocumentRoot(网站根目录)和ServerName(通常是你的域名或IP地址,但在此配置中,你可以使用localhost和端口号): ```apacheconf &lt;Virtual...

    单台服务器中利用Apache的VirtualHost如何搭建多个Web站点详解

    VirtualHost是Apache的一项核心特性,它允许在一个服务器上配置多个主机,每个主机可以绑定到不同的IP地址、端口,或者基于域名来区分。这样,用户访问不同的域名时,Apache会根据配置将请求路由到相应的站点。 ...

    Linux CentOS5.5 web配置

    基于名称的虚拟主机是指多个网站共享同一个IP地址和端口,通过DNS解析来区分不同的网站。配置示例如下: ```apacheconf Listen 80 &lt;VirtualHost *:80&gt; DocumentRoot "/var/www/site1" ServerName site1.example....

    Apache2.0中文手册(chm格式)

    另外,Listen, NameVirtualHost和VirtualHost 指令支持IPv6的数字地址串(比如:“Listen [fe80::1]:8080”)。 过滤 Apache的模块现在可以写成过滤器的形式, 当内容流经它到服务器或从服务器到达的时候进行处理...

    apache2 chm 手册

    另外,Listen, NameVirtualHost和VirtualHost 指令支持IPv6的数字地址串(比如:“Listen [fe80::1]:8080”)。 过滤 Apache的模块现在可以写成过滤器的形式, 当内容流经它到服务器或从服务器到达的时候进行处理。 ...

    062901apache 虚拟主机1

    配置时,需要在`&lt;VirtualHost&gt;`指令中指定监听的端口,如`Listen 8080`,然后设置`DocumentRoot`来指定该虚拟主机的根目录。 2. **基于IP的虚拟主机**:每个虚拟主机绑定到不同的IP地址。在Apache 2.2及更早版本中...

    apache在mac上以及linux上安装存在的一些问题以及解决方法

    - **端口绑定**:在Apache配置文件中,可通过指定`Listen`指令来绑定特定的端口,如80端口。对于Mac和Linux系统,默认情况下Apache通常监听80端口。若要更改端口,只需修改`httpd.conf`文件中的相应配置即可。例如,...

    iis 和apache 怎么同时用域名访问的

    2. **修改监听端口**:在`httpd.conf`文件中找到`Listen 80`这一行,将其修改为`Listen 8080`,保存并关闭文件。 3. **重启Apache服务**:修改完成后,需要重启Apache服务以使更改生效。 #### 解决方案二:使用...

    详解Nginx与Apache共用80端口的配置方法

    如果有多个虚拟主机,Apache可以通过NameVirtualHost指令和VirtualHost块来管理,所有这些虚拟主机都可以监听80端口,因为它们都绑定了回环地址127.0.0.1: ```apache NameVirtualHost *:80 &lt;VirtualHost *:80&gt; ...

    实验_Linux下的web服务器.doc

    - 在新的目录`/var/www/virtualhost`下创建和放置网页文件。 - 重启Web服务器并验证新IP地址的Web服务是否可用。 5. **配置基于域名的虚拟主机** - 更新主配置文件,创建基于域名的虚拟主机,如`A.baozong.com`...

    Apache2.2版本中文使用手册.zip

    - 配置域名绑定、端口绑定和IP绑定。 5. **安全与权限**: - `.htaccess`文件中的访问控制,如`Deny`和`Allow`指令。 - 使用SSL/TLS进行加密通信。 - 设置用户认证和授权,如`mod_auth`模块的使用。 6. **性能...

    apache学习资料

    - **修改监听的IP和端口:** ```bash Listen [IP:]PORT ``` 其中IP可以留空,表示监听所有IP地址。 - **启用持久连接:** ```bash KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 ``` 持久...

    httpd.conf配置文件

    12. **Listen**:定义服务器监听的端口和 IP 地址。 ```apache Listen 3000 Listen 12.34.56.78:80 ``` 13. **BindAddress**:绑定到特定 IP 地址。如果设置为 `"*"`,则表示绑定到所有可用的 IP 地址。 ```...

    JAVA_DotNET_PHP集成环境配置.rar

    然后,在`VirtualHost`配置中,设置`ServerName`和`DocumentRoot`以指向你的PHP应用目录。如果是Nginx,修改`nginx.conf`,在`server`块内,将`listen 80;`添加到合适的`location`块中。 为了实现三者共存,我们...

    Apache实现多端口多主机名配置

    2. **启用NameVirtualHost**:在配置文件中,启用NameVirtualHost指令,指定服务器的IP地址,例如: ``` NameVirtualHost *:80 ``` 3. **配置虚拟主机**:接着,为每个站点创建一个虚拟主机配置。在`/etc/httpd/...

    Lamp环境下设置绑定apache域名的方法分析

    - `VirtualHost *:80` 定义了监听所有IP地址的80端口,这是HTTP协议的标准端口。 - `ServerAdmin` 指定网站管理员的电子邮件地址,用于接收错误报告等通知。 - `php_admin_value open_basedir` 设置PHP的open_...

    Apache与IIS共用端口的解决方法集

    以上介绍了三种实现Apache与IIS共用端口的方法,每种方法都有其适用场景和特点。方法一适用于IIS 5.x版本,方法二适用于IIS 6.0版本,而方法三则适用于任何版本的Apache与IIS组合。选择合适的方法取决于具体的应用...

    Linux与Apache(httpd.conf )配置与管理图文教程 chm

    5. **虚拟主机**:Apache支持多个虚拟主机,通过`NameVirtualHost`和`VirtualHost`指令,可以根据不同的域名配置不同的站点。 6. **模块管理**:Apache有许多模块,如mod_rewrite用于URL重写,mod_ssl用于HTTPS支持...

Global site tag (gtag.js) - Google Analytics