Apache服务器VirtualHost常用配置

Apache服务器中的VirtualHost用来定义虚拟网站,我们可以在一个VirtualHost中定义一个项目(网站),也可以使用反向代理的方式定义多个项目(即一个域名之下多个子项目)。以下总结Apache服务器VirtualHost常用配置。

一、常规配置

<VirtualHost *:80>
        DocumentRoot "/var/www/html"
        ServerName www.jkdev.cn
</VirtualHost>
  • DocumentRoot:网站目录
  • ServerName:网站域名

二、常用附加配置

<VirtualHost *:80>
       DocumentRoot "/var/www/html"
       ServerName localhost
       <Directory "/var/www/html">
           Options Indexes FollowSymLinks
           AllowOverride All
           Require all granted
           ErrorDocument 404 https://www.jkdev.cn/404.html
       </Directory>
</VirtualHost>
  • Directory节点:定义目录属性
  • Options Indexes FollowSymLinks:开启目录访问,显示目录结构,并允许在此目录中使用符号连接
  • AllowOverride All:允许定义.htaccess文件
  • AllowOverride None:忽略.htaccess文件
  • Require all granted:允许所有请求
  • ErrorDocument 404 https://www.jkdev.cn/404.html:路径匹配时跳转的404界面

三、开启HTTPS

<VirtualHost _default_:443>
    DocumentRoot "/var/www/html"
    ServerName hook.jkdev.cn
    SSLEngine on
    SSLCertificateFile /etc/ssl/2_hook.jkdev.cn.crt
    SSLCertificateKeyFile /etc/ssl/3_hook.jkdev.cn.key
    SSLCertificateChainFile /etc/ssl/1_root_bundle.crt
    <Directory "/var/www/html">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        ErrorDocument 404 https://www.jkdev.cn/404.html
    </Directory>
    </VirtualHost>
  • SSLEngine on:开启SSL
  • SSLCertificateFile:指定证书公钥文件
  • SSLCertificateKeyFile:指定证书私钥文件
  • SSLCertificateChainFile:指定证书链文件

四、反向代理(端口转发)

<VirtualHost _default_:443>
    ServerName api.jkdev.cn
    SSLEngine on
    SSLCertificateFile /etc/ssl/api/2_api.jkdev.cn.crt
    SSLCertificateKeyFile /etc/ssl/3_api.jkdev.cn.key
    SSLCertificateChainFile /etc/ssl/1_root_bundle.crt

    ProxyPreserveHost On
    ProxyRequests Off

    ProxyPass /v2 http://localhost:92/
    ProxyPass /v1 http://localhost:91/
    ProxyPass / http://localhost:90/
        
    ProxyPassReverse /v2 http://localhost:92/
    ProxyPassReverse /v1 http://localhost:91/
    ProxyPassReverse / http://localhost:90/
</VirtualHost>
  • ProxyPreserveHost On:开启反向代理
  • ProxyRequests Off:关闭正向代理
  • ProxyPass:设置反向代理路径
  • ProxyPassReverse:使Apache自动处理反向代理中的从定向响应,一般和ProxyPass一起用

五、http重定向到https

<VirtualHost *:80>
    ServerName jkdev.cn
    #redirect
    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>
  • RewriteEngine on:开启从定向功能
  • RewriteCond %{SERVER_PORT} !^443$:从定向条件,端口不是443时重定向,^为开头,$为结束
  • RewriteRule:重定向规则,L:表明当前规则是最后一条规则,停止分析以后规则的重写;R:强制外部重定向

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

评论已关闭

要铭记在心:每天都是一年中最美好的日子。

生活远没有咖啡那么苦涩,关键是喝它的人怎么品味!每个人都喜欢和向往随心所欲的生活,殊不知随心所欲根本不是生活。

如果错过了太阳时你流泪了,那么你也要错过群星了。

不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧。

我不明白为什么要那么在意别人的看法,评头论足只是无聊人的消遣,何必看得如临大敌。如果你不吃别人家的饭,就别太把别人的话放在心上。