将CentOS8上的Nginx进行SSL加密,然后通过守护进程运行反向代理

由于很久没有机会在原生的CentOS 8.2上配置nginx环境了,所以我总结了一下操作流程。
我的目标是启动守护程序软件,并通过nginx的反向代理(ssl)访问该端口。

请为以下内容进行中文本地化改写:

Nginx

因为这是一个素净的操作系统,所以没有安装Web服务器。
由于想要使用nginx作为Web服务器,所以首先要安装nginx。

配置Nginx仓库

指定nginx存储库。

vi /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

检查和安装软件仓库包

请确认存储库的信息是否正确。

$ yum info nginx

如果没有问题的话,我们会进行安装。

$ yum -y install nginx

如果安装成功,请检查版本。

$ nginx -v
nginx version: nginx/1.18.0

自动化Nginx服务。

一旦服务器启动后,将自动设置开启nginx。
(若不进行此设置,每次服务器关闭后都必须手动启动nginx)

$ systemctl enable nginx

终于要启动nginx了。

$ systemctl start nginx

如果在启动nginx后,在浏览器中输入域名或IP地址,显示“Welcome to nginx!”则表示成功。
顺便说一下,默认的nginx文档根目录如下所示。

/usr/share/nginx/html/index.html

如果运行不顺利,请参考以下方式。

如果无法连接到nginx,可以通过以下方式进行确认和调查,并解释相关命令。

当服务器无法启动时,可能是由于Nginx端口被占用。以下是解决此问题的方法。

当想要查看占用特定端口的进程时

防火墙

防火墙

我们将使用CentOS7中引入的管理命令”firewall-cmd”。首先,让我们来确认当前的状态。

$ firewall-cmd --state

如果状态不是“running”,则启动防火墙。并且还会设置自动启动。

$ systemctl enable firewalld
$ systemctl status firewalld

如果已经被屏蔽(mask)并且防火墙没有启动的情况下,请尝试解除屏蔽(unmask)后重新启动。

$ systemctl unmask firewalld 
$ systemctl status firewalld

查看默认时区。

在 firewalld 中,有一个称为“区域”的概念。
这里预先准备了一些包含了多个规则的模板,让我们来确认默认分配的区域。

$ firewall-cmd --get-default-zone
public

默认情况下,分配了”public”区域。
查看服务,可以看到设置了ssh等,这意味着ssh端口是开放的。

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

添加端口

请确保开通端口号为80的http和端口号为443的https。
在公共区域中添加以下内容。

$ firewall-cmd --add-service=http --zone=public --permanent
$ firewall-cmd --add-service=https --zone=public --permanent

设置更改后,请重新加载页面。

$ firewall-cmd --reload

以下是想要连续打开端口的例子。

$ firewall-cmd --add-port=100-1000/udp --zone=public --permanent

安装和启动Daemon软件

這次使用了一款傳送門軟體。
傳送門軟體的安裝是按照以下方法進行的。

$ cd /usr/local/bin

这次的Daemon软件已经配置为在5000号端口启动。
然后通过nginx的设置将5000号端口设置为反向代理,以便通过nginx前端访问Daemon进程。

如果您创建一个单元文件,就可以自动启动软件的操作系统(通过systemctl enable设置),请尝试一下。

进行SSL加密

在为DNS分配了地址之后,要实现SSL加密的步骤如下:snap安装 > certbot安装和设置 > 更新nginx配置文件进行设置的流程。

安装Snap

按照以下步骤安装certbot安装工具。

安装 Certbot

请使用Snap安装Certbot。
将安装证书。

nginx的配置

我会修改nginx的配置文件。

设定方法在这里。
https://qiita.com/morrr/items/7c97f0d2e46f7a8ec967

$ vim /etc/nginx/conf.d/default.conf

由于Demon软件在5000端口运行,您可以通过将其反向代理到https://test.example.com的5000端口,在Nginx上运行Demon软件。

server {

        listen 443 ssl default_server;

        index index.html index.htm;

        server_name test.example.com;

        location / {
                proxy_pass http://127.0.0.1:5000;
        }
}

确认conf文件

$ nginx -t

如果没有发生错误,将重新启动nginx。

$ systemctl restart nginx

确认通过访问域名来处理守护软件。

附录(禁用selinux)

基本上,SELinux啟用時可能會導致服務無法運行,因此我們通常會將其停用。

$ getenforce
Enforcing
vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

将其设置为”disabled”即可将其关闭。

SELINUX=disabled

重新启动服务器。

reboot
广告
将在 10 秒后关闭
bannerAds