在5分钟内使用https和防火墙为Ubuntu上的Apache Tomcat开发或配置Nginx代理



我不是管理员,但是有时候解决自己的任务比委派给某人更容易(更有趣)。

有时,我们需要“提升” 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 / { # try_files $uri $uri/ =404; include proxy_params; proxy_pass http://tomcat/; } 

我们检查所有输入是否正确

 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,并在我的脚本中使用它,但是突然之间有一个现成的“理想”产品?

Source: https://habr.com/ru/post/zh-CN434010/


All Articles