赞
踩
1、介绍
一般来说,apache2配置好http和https后,如果想要做http强转到https,
需要设置url重定向规则,大致需要下面几个步骤即可完成配置。
2、安装Apache2
sudo apt-get install apache2
– 默认站点在 /var/www/
– 配置文件在 /etc/apache2/
– 日志在 /var/log/apache/
– 启动脚本是 /etc/init.d/apache2
3、etc/apache2下的文件夹与文件
apache2.conf:Apache的主要配置文件,包含全局配置。
envvars:Apache2环境变量设置。
ports.conf:配置Apache监听的端口。
mods-available:这个目录包含模块和模块配置文件,不是所有的模块都有配置文件。
mods-enabled:持有/etc/apache2/mods-available目录下文件的链接,当该目录下有一个模块文件和其配置文件,那么Apache重启后该模块将生效。
sites-available:这个目录包含Apache虚拟主机的配置文件。虚拟主机允许Apache配置多个站点并为每个站点配置不同的参数。后面下面配置的时候会配置80端口的http重定向为443的https。
sites-enabled:持有/etc/apache2/sites-available目录下文件的链接。当Apache重启后,该目录中包含的站点将会被激活。
4、ssl配置
安装openssl
sudo apt-get install openssl
5、开启ssl模块
sudo a2enmod ssl
无效则输入下面两个命令
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
6、进入/etc/apache2/ports.conf
查看是否有80 和443端口,没有就添加上去
7、在项目根目录下/var/www,创建文件".htaccess",内容如下
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
或者****
/etc/apache2/sites-available/000-default.conf ,
打开 /etc/apache2/sites-available/000-default.conf ,
在 <\VirtualHost *:80><\VirtualHost> 标签内随便一个地方加入以下三行
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R=301]
8、修改apache统一配置文件里面的"",方法如下:
cd /etc/apache2/
sudo vi apache2.conf
# 找到<Directory />那一段,修改一下AllowOverride从None到All
<Directory />
Options FollowSymLinks
AllowOverride All
Require all denied
</Directory>
# 找到<Directory /var/www/>那一段,修改一下AllowOverride从None到All
<Directory /var/www/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
9、配置ssl虚拟站点
如果不想用软链接,可以从sites-available中复制default-ssl.conf到sites-enabled(表示启用的配置),然后修改default-ssl.conf
SSLCertificateFile 证书地址/2_xxx.crt
SSLCertificateKeyFile 证书地址/3_xxx.key
SSLCertificateChainFile 证书地址/1_root_bundle.crt
10、启动重定向
sudo a2enmod rewrite
或者
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
11、重启apache服务
sudo service apache2 restart
12、本地hosts文件配置
#配置如下:172.16.0.235 xinda.pactera.com
13、访问: http://xinda.pactera.com/ 自动跳转 https://xinda.pactera.com/
/*************************************************************************************
* 扩展1、在你的网站根目录下面添加该文件".htaccess"目录访问控制文件,并添加如下内容:
* RewriteEngine On
* RewriteCond %{SERVER_PORT} 80
* RewriteRule ^(.*)$ https://www.orbpi.cn/$1 [R,L]
* #或者
* RewriteEngine On
* RewriteCond %{SERVER_PORT} 80
* RewriteRule ^(.*)$ https://www.orbpi.cn/$1 [R=301,L]
* #又或者
*RewriteEngine on
* RewriteBase /
* RewriteCond %{SERVER_PORT} !^443$
* RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
* #注意:如果是在子目录,可以用
* RewriteEngine On
* RewriteCond %{SERVER_PORT} 80
* RewriteCond %{REQUEST_URI} subfolder
* RewriteRule ^(.*)$ https://www.orbpi.cn/subfolder [R,L]
* 扩展2、上面是对所有的url都转换成https,如果针对某一个url转成https应该进行如下操作
* 只要求访问http://bo.kevin.com/beijing/ 时强制跳转到https://bo.kevin.com/beijing/,其他的url访问时都不做http到https的强转!
* 在.htaccess文件中添加下面内容:
* [root@docker-test2 web]# cat .htaccess
* <IfModule mod_rewrite.c>
* RewriteEngine on
* RewriteBase /
* RewriteCond %{SERVER_PORT} 80
* RewriteCond %{HTTP_HOST} ^bo.kevin.com/beijing/ [NC]
* RewriteRule ^(.*)$ https://bo.kevin.com/beijing/ [R,L]
* </IfModule>
* 上面的配置,就实现了只是针对http://bo.kevin.com/beijing/这一个单独的url做https的强制跳转,其他url访问时都不做跳转!
* 扩展3、相关命令
* 查看Apache的运行版本:apachectl -v
*/*******************************************************************************************************
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。