nginx代理,wildfly做web容器实现网站输入域名跳转到https的域名
应公司要求想要实现用户输入域名访问网站,自动跳转到https加域名的网页,因为添加了ssl,能显示公司的名称。我的操作方法是把ssl放到web容器中,前面加一个nginx做代理,将所有到80端口的请求,转到web容器的443的端口上。
配置web容器的方法在之前写过,参考《wildfly用https的方式访问》,链接:http://881955.blog.51cto.com/871955/1670069
安装wildfly的方式
yum install java-1.8.0-openjdk-devel
Wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.zip
unzip wildfly-8.2.0.Final.zip -d /opt/
ln -s /opt/wildfly-8.2.0.Final /opt/wildfly
cp /opt/wildfly/bin/init.d/wildfly.conf /etc/default/wildfly.conf\
Vim /etc/default/wildfly.conf
## Location of JDK
JAVA_HOME="/usr/lib/jvm/java"
## Location of WildFly
JBOSS_HOME="/opt/wildfly"
## The username who should own the process.
JBOSS_USER=wildfly
## The mode WildFly should start, standalone or domain
JBOSS_MODE=standalone
## Configuration for standalone mode
JBOSS_CONFIG=standalone-full-ha.xml
## Configuration for domain mode
# JBOSS_DOMAIN_CONFIG=domain.xml
# JBOSS_HOST_CONFIG=host-master.xml
## The amount of time to wait for startup
STARTUP_WAIT=60
## The amount of time to wait for shutdown
SHUTDOWN_WAIT=60
## Location to keep the console log
JBOSS_CONSOLE_LOG="/var/log/wildfly/console.log"
Cp /opt/wildfly/bin/init.d/wildfly-init-redhat.sh /etc/init.d/wildfly
chkconfig --add wildfly
chkconfig wildfly on
mkdir -p /var/log/wildfly
useradd -s /sbin/nologin wildfly
chown -R wildfly:wildfly /opt/wildfly-8.2.0.Final
chown wildfly:wildfly /opt/wildfly
chown wildfly:wildfly /var/log/wildfly
Start WildFly
service wildfly start
安装完wildfly后安装nginx,nginx的安装方法不在赘述,不过我在阿里云上部署的时候遇到一点问题,在我本地虚拟机上做测试的时候源码nginx,yun包的pcre和zlib安装时成功的,但是在阿里云上这么操作就部可以,提交工单询问后,解释为不能源码包和yum包混用。无奈直接用yum安装nginx。
Nginx比较关键的地方是配置代理部分:配置如下
由于我后面的web容器需要监听443,那么我nginx需要鉴定80端口
# HTTPS server
server {
listen 80;
server_name 10.10.10.34;
ssl on;
ssl_certificate crt文件路径
ssl_certificate_key key文件路径
ssl_session_timeout 5m;
error_page 497 https://10.10.10.34;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
#proxy_pass http://;
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
上面红色部分这样写是因为,输入域名访问的时候,访问页面会400的问题,这一行配置是把请求从400页面上重定向到https上。
当wildfly监听的httpss端口改成443后,会报错,启动不了443端口,这是因为端口号小于1024的必须要用root权限来启动,所以上面给文件,目录chown的地方要都给改成root的用户,用户组的权限,这样wildfly的443端口就能起来了。
最终实现的过程是用户输入域名请求到80端口,nginx将过来的请求重定向到wildfly的443上,实现页面的跳转
公司的服务器托管在阿里云上,在负载均衡slb上加证书信息,用js页面跳转即可。
一般情况下一台设备只用一张证书,想加扩展就是多申请证书。一般就是将证书放在nginx上,这样webserver横向扩展,就没有证书方面的顾虑了。
参考资料:
http://www.cnblogs.com/yun007/p/3739182.html
关于nginx负载均衡ip-hash的配置,保证用户的session会话
http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html
http://serverfault.com/questions/610117/failed-to-bind-to-0-0-0-0443