1.Tomcat 配置不同二级域名
进入 Tomcat 的安装目录 conf 目录下,找到 server.xml 文件打开,找到 host 节点。复制 host 节点并且编辑里面的内容:
<!--blog.kangaroohy.top-->
<Host name="blog.kangaroohy.top" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/usr/tomcat/webapps/solo" debug="0"/>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
其中,Host 节点的 name 就是网址,Context 节点的 docBase 就是项目的绝对路径。
有多少项目,就配置多少 Host 节点。通过这种方式,即可在同一个 Tomcat 中部署多个 Webapp。重启服务器,在云服务器安全组添加 8080 端口外网访问规则,即可通过 http://blog.kangaroohy.top:8080
访问项目。接下来再配置 Nginx。
2.Nginx 安装及配置
安装
在 Ubuntu 系统下,直接
$sudo apt-get install nginx
即可安装 Nginx,安装完后,文件结构大致为:
- 所有的配置文件都在
/etc/nginx
下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available 下 - 程序文件在
/usr/sbin/nginx
- 日志放在
/var/log/nginx
中 - 并已经在
/etc/init.d/
下创建了启动脚本 nginx - 默认的虚拟主机的目录设置在了
/var/www/nginx-default
(有的版本 默认的虚拟主机的目录设置在了/var/www
, 请参考/etc/nginx/sites-available
里的配置)
配置
在配置 solo 博客的时候,直接用了 solo 官方的配置,先找到 nginx 的配置目录(也可以通过 whereis nginx
命令得知安装目录),也是进入到 /etc/nginx
下的配置文件 nginx.conf
的 http 节点中作如下配置:
upstream blog {
server localhost:8080;
}
server {
listen 80;
server_name blog.kangaroohy.top;
access_log off;
location / {
proxy_pass http://blog$request_uri;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
}
}
进入 nginx 安装目录 sbin 下,输入命令 ./nginx -t
,看到如下显示
nginx.conf syntax is ok
nginx.conf test is successful
说明配置文件正确!重启 nginx 后,通过 http://blog.kangaroohy.top
成功访问。
注:
- 在启动时遇到了 80 端口占用问题,是由于 Nginx 自身占用导致,直接 kill 掉 nginx 再启动就搞定。
ps -ef | grep nginx
从容停止 kill -QUIT 主进程号
快速停止 kill -TERM 主进程号
强制停止 kill -9 nginx
sudo /usr/sbin/nginx
- 配置完 nginx 后,修改安全组的 8080 端口为 80 端口,同时增加 443 端口,为下边配置 SSL 准备。
3.Nginx 服务器安装 SSL 证书
申请 SSL
由于用的是阿里云,所以直接在阿里云申请的免费 SSL 免费型 DV SSL,系统签发后,下载 Nginx 版本并进行配置。
配置
在 Nginx 的 /etc/nginx
目录下新建 cert
目录,并把下载好的证书上传到该目录下,名字可自定义,与 server 里的名字相同即可。进入到 /etc/nginx
下的配置文件 nginx.conf
的 http 节点中作如下调整:
upstream blog{
server localhost:8080;
}
server {
listen 443;
server_name blog.kangaroohy.top;
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/blog.kangaroohy.top.pem;
ssl_certificate_key cert/blog.kangaroohy.top.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_pass http://blog$request_uri;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
}
}
server{
listen 80;
server_name blog.kangaroohy.top;
rewrite ^/(.*)$ https://blog.kangaroohy.top/$1 permanent;
}
再次检查是否配置没问题,然后重启 Nginx,访问 http://blog.kangaroohy.top 自动跳转到 https://blog.kangaroohy.top
注:
在给 solo 配置 SSL 时,还需要把 solo 的 latke.properties 配置文件改改
#### Server ####
# Browser visit protocol
serverScheme=https
serverHost=blog.kangaroohy.top
成功给 solo 配置 SSL!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于