将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