
我不是管理员,但是有时候解决自己的任务比委派给某人更容易(更有趣)。
有时,我们需要“提升” servlet容器(最常用的是Apache Tomcat)并为其配置代理,ssl终止(或简称为https),并用防火墙覆盖所有内容(仅保留ssh和http / https)。
碰巧的是,在过去的一周中,我三度解决了这个问题(随着恒星的诞生,两年前),这种经历变成了这种小事。
因此,考虑到Ubuntu服务器18.04或16.04(最有可能的是您不会对14.04左右的版本有问题)。 如果您没有Ubuntu服务器,则可以快速将其“拾取”,例如,到
Digital Ocean (我的推荐链接)。 写完这篇文章后,我注意到新帐户的DO会在尝试60天的情况下给您$ 100的试用费(如果您指示有贷款的话)。
域名解析
对于一个从Let's Encrypt获取免费https证书的简单方案,我们需要访问DNS服务器。 我们在其中写入Ubuntu服务器的IP地址,名称为xyz。 确切地说,假设您拥有mydomain.com,即 我们服务器的DNS名称为xyz.mydomain.com
安装方式
安装Apache Tomcat(我将使用版本8)
apt install tomcat8
现在是Nginx
apt install nginx-core
客制化
Nginx的
配置先前在DNS服务器名称中注册的Nginx(文件
/ etc / nginx / sites-available / default )
server_name xyz.mydomain.com;
我们将链接注册到已安装的Apache Tomcat(如果您没有进行任何更改,则链接将“存在”于端口8080上)。 我们需要将
上游块添加到
服务器块。
upstream tomcat { server 127.0.0.1:8080 fail_timeout=0; } server { ...
更改
位置块并将所有流量重定向到Apache Tomcat
server { ... location / {
我们检查所有输入是否正确
service nginx configtest
然后重新启动nginx
service nginx restart
阿帕奇tomcat
原则上,这部分是可选的,如果对您来说真正的ip地址,端口,请求即将来临的方案(我正在谈论https)和请求的服务器发送到tomcat对您来说都没有关系,则可以省略此步骤。 但是,在某些情况下,此步骤是必需的(例如,对于Java Web Start aka JNLP技术)。
在
<Host />块中将其添加到
/etc/tomcat8/server.xml文件中。
<Host> ... <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto" /> </Host>
重启tomcat
service tomcat8 restart
Https证书
通过http进行验证的https证书将帮助我们获得certbot机器人,或者更确切地说是对nginx'a的修改-python-certbot-nginx
在Ubuntu 18.04上,要安装certbot,只需运行
apt install python-certbot-nginx
对于Ubuntu 16.04-您必须修改添加存储库等(请参阅
链接的
详细指南 )。
我们启动
certbot --nginx
在此过程中,指定您的电子邮件,接受许可协议,不允许我们使用Let's Encrypt“弄乱”我们的数据,确认将颁发证书的DNS名称,并同意该漫游器本身将“配置” nginx。
瞧:)
为了以防万一,我们检查了证书的续签是否顺利通过(证书签发了90天,之后可以无限期延长同一期限)。
certbot renew --dry-run
对于内部偏执狂,我们检查cron文件是否在适当的位置
ls -al /etc/cron.d/certbot
防火墙功能
我们停止并备份(快照)虚拟机。
ufw allow ssh ufw allow http ufw allow https ufw default allow outgoing ufw default deny incoming ufw show added
祈祷!
ufw enable ufw status
我们验证一切正常,可以通过https访问该网站,重定向http通信,并安全关闭上述端口和ssh之外的端口。
PS:我衷心希望本文对某人有用,对建设性的批评我将感到高兴。
PPS也许全知的ALL会告诉我更换Windows的certbot? 您需要获得我自己配置的Nginx的初始证书(理想情况下,请根据计划进行更新,或者总体上讲别致)。 是的,我知道您可能可以使用该工具来加密IIS,并在我的脚本中使用它,但是突然之间有一个现成的“理想”产品?