首页 > 系统相关 >使用nginxWebUI配置Web网站与端口转发​

使用nginxWebUI配置Web网站与端口转发​

时间:2023-11-10 20:31:45浏览次数:39  
标签:Web http 虚拟机 配置 端口 nginx nginxWebUI

使用nginxWebUI配置Web网站与端口转发

石家庄 王春海 刘春福

最近我们公司托管了5台服务器到IDC机房,其中4台服务器组成VMware虚拟化集群,为我公司提供50台左右生产环境的虚拟机并对外提供服务,另1台服务器用于备份。IDC机房提供15个公网的IP地址。其中1个公网的IP地址配置在硬件防火墙(或路由器)上,使用端口映射方式,将这5台服务器主机IP地址与底层iDRAC的远程管理进行转发,实现了服务器的远程管理。而我公司50台虚拟机,部分虚拟机直接配置公网IP地址对外提供服务,剩余的一部分虚拟机,配置了一台RHEL 8.6的虚拟机,使用nginx的反向代理功能进行转发,使用iptables实现共享上网功能。拓扑如图1所示。

使用nginxWebUI配置Web网站与端口转发​_服务器托管


图1 使用nginx代理转发

通常情况下,每台虚拟机对外提供一个应用,每台虚拟机需要映射2个端口。1个端口用于业务端口(例如网站),另1个端口用于远程管理(对于Windows服务器映射TCP的3389端口,对于Linux服务器映射TCP的22端口)。图1标出了部分使用内网IP地址的虚拟机,我们以此为例进行介绍,示例Web网站转发与端口映射如表1所列。

表1 Web网站与端口转发列表

序号

监听域名

监听端口

内网地址

内网端口

用途

1

www.yinet.online

80

192.168.6.100

80

网站

2

30100

192.168.6.100

3839

远程管理

3

www.chunhai.wang

443

192.168.6.101

443

网站

4

20101

192.168.6.101

22

远程管理

5

oa.chunhai.wang

80

192.168.6.103

80

网站

6

30103

192.168.6.103

3389

远程管理

7

8011

192.168.6.103

8011

测试网站


使用nginx转发Web网站与端口需要编写配置文件,但这对于部分熟悉Windows图形界面的管理员来说有一定的难度。所以,为了减轻网管的负担,我们使用了一款图形化的管理nginx的配置工具—neinxWebUI。

nginxWebUI可以使用网页来快速配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, 静态html服务器, ssl证书自动申请、续签、配置等, 配置好后可一建生成nginx.conf文件, 同时可控制nginx使用此文件进行启动与重载, 完成对nginx的图形化控制闭环。

nginx本身功能复杂, nginxWebUI并不能涵盖nginx所有功能, 但能覆盖nginx日常90%的功能使用配置, 平台没有涵盖到的nginx配置项, 可以使用自定义参数模板, 在conf文件中生成配置独特的参数。

下面我们介绍安装配置过程。

1 准备RHEL的代理虚拟机与安装nginx

在本项目中,我们创建1台4个vCPU、4GB内存和300GB硬盘,配置了2个网卡的虚拟机,安装Red Hat Enterprise Linux 8.6版本。虚拟机配置如图所示。

安装RHEL操作系统之后,使用root账户登录,为RHEL虚拟机的2个网卡设置IP地址,其中1个网卡设置为公网IP地址(当前示例为61.x1.x2.x3),并配置子网掩码、网关和DNS。另1个网卡设置为内网IP地址(规划为192.168.6.253),设置子网掩码,不设置网关和DNS。该虚拟机通过设置公网IP地址的网卡访问Internet。

在安装好RHEL 8.6上之后,安装nginx,步骤如下。

(1)为nginx设置 yum 存储库,应创建。


vim /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

(2)执行sudo yum install nginx安装nginx。当前安装的nginx版本为nginx-1:1.22.1-1.el8.ngx.x86_64。

2 安装nginxWebUI

nginxWebUI需要JAVA JDK,在本示例中,将在RHEL6.8安装JDK1.7,采用rpm包的方式安装。

(1)从oracle官网(https://www.oracle.com/java/technologies/downloads/#jdk17-linux)下载

(2)使用rpm命令安装JDK,命令如下。

rpm -ivh /tmp/jdk-17_linux-x64_bin.rpm

(3)从nginxWebUI 官网(https://www.nginxwebui.cn/)下载最新版本,当前版本号为3.4.6。在RHEL虚拟机中,在/home目录中创建名称为neinxWebUI的目录,然后将nginxWebUI-3.4.6.jar下载保存到/home/nginxWebUI/目录中,保存文件名称为nginxWebUI.jar,命令如下。

mkdir /home/nginxWebUI/

wget -O /home/nginxWebUI/nginxWebUI.jar http://file.nginxwebui.cn/nginxWebUI-3.4.6.jar

(4)将nginxWebUI设置为开机自启动,创建/etc/systemd/system/nginxwebui.service文件。

vim /etc/systemd/system/nginxwebui.service

cat /etc/systemd/system/nginxwebui.service

内容如下:

[Unit]

Descriptinotallow=NginxWebUI

After=syslog.target

After=network.target


[Service]

Type=simple

User=root

Group=root

WorkingDirectory=/home/nginxWebUI

ExecStart=/usr/bin/java -jar /home/nginxWebUI/nginxWebUI.jar

Restart=always


[Install]

WantedBy=multi-user.target

(5)然后执行如下命令,启用nginxwebui服务。

systemctl daemon-reload

systemctl enable nginxwebui.service

systemctl start nginxwebui.service


3 配置防火墙

nginxWebUI的管理界面默认需要TCP的8080的端口。如果用nginx转发Web网站,一般需要TCP的80和443端口。需要在Linux的防火墙上开放这些端口。

(1)在RHEL虚拟机中,执行如下命令关闭SELinux。

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

(2)在防火墙中开放TCP的8080、443、80端口,命令如下。

firewall-cmd --permanent --add-port 8080/tcp --add-port 443/tcp --add-port 80/tcp

如果要远程管理服务器,需要其他端口时,例如,对于nginx后端的Windows服务器,如果使用远程桌面进行管理,如果要使用默认的3389端口,可以执行如下命令。

firewall-cmd --permanent --add-port 3389/tcp

如果使用非默认端口,例如使用30001,可以执行如下命令。

firewall-cmd --permanent --add-port 30001/tcp

(2)在防火墙添加了开放端口外,执行如下命令重新加载防火墙。

firewall-cmd --reload

(3)如果要查看防火墙开放的端口,执行如下命令。

firewall-cmd --list-all


4 使用nginxWebUI

在浏览器中登录nginxWebUI的管理界面,默认管理端口为8080。

使用chrome浏览器登录nginxWebUI的管理界面,在当前的示例中,安装nginx的虚拟机的公网IP地址为61.x1.x2.x3,内网IP地址为192.168.6.253,在互联网上可以使用http://61.x1.x2.x3:8080登录,在局域网中可以使用http://192.168.6.253:8080登录。在第一次登录时,需要设置登录用户名和密码,密码要求至少8位,包括大小写字母和数据。设置管理员账户和密码后登录。下面通过具体实例介绍nginxWebUI的使用。

登录nginxWebUI后的主界面如图所示。在“http参数配置”中,可以通过单击“添加http参数配置”,添加nginx的配置参数。也可以通过单击“简易配置向导”添加修改配置参数。配置之后单击“预览”查看nginx的http配置文件。如图1所示。

使用nginxWebUI配置Web网站与端口转发​_nginx_02


图1 配置http参数

nginx的功能主要是转发http(包括https)网站、TCP与UDP的端口映射。如果转发http的网站,在“反向代理(Server)”中,单击“添加反向代理”链接,弹出“编辑反向代理”对话框,在此对话框中,转发类型下拉列表中有http和TCP/UDP。如果要转发http或https网站选择http,如果做端口映射选择TCP/UDP。我们通过前文规划的“表1 Web网站与端口转发列表”为例进行介绍。

(1)如果要转发http网站(默认使用TCP协议、端口为80),例如表1中序号为1的网站,网站对外域名为www.yinet.online,网站保存在IP地址为192.168.6.100的虚拟机中,网站端口为80。在nginxWebUI中选择“添加反向代理”,转发类型选择http,监听ip端口中,IP地址添加nginx防火墙的外网IP地址,当前示例为61.x1.x2.x3(www.yinet.online的域名也要解析为61.x1.x2.x3这个IP地址),端口为80。监听域名为www.yinet.online。单击“添加代理目标”,代理类型选择“动态http”,代理目标为http://192.168.6.100。设置之后单击“提交”按钮。如图2所示。

使用nginxWebUI配置Web网站与端口转发​_服务器托管_03


图2 转发http网站

(2)如果要转发https网站,例如表1中序号为3的名称为https://www.chunhai.wang的网站。并且要实现访问http://www.chunhai.wang的时候自动跳转到https://www.chunhai.wang的站点。需要先为www.chunhai.wang申请nginx格式证书,并导出nginx格式的证书,证书包括2个文件,一个文件扩展名为.key文件,另一个文件扩展名为.pem文件,将这2个文件使用sftp上传到nginx虚拟机的一个目录中(不能上传到/tmp目录中),本示例将www.chunhai.wang的证书上传到/cafile的文件夹中。然后在nginxWebUI中添加反向代理,转发类型为http,监听ip地址为61.x1.x2.x3(www.chunhai.wang的IP地址解析为61.x1.x2.x3),端口为443,监听域名为www.chunhai.wang。开启ssl选择是。在“pem文件路径”与“key文件路径”右侧单击“选择已有文件”,选择上传的www.chunhai.wang的证书文件。开启http2可以根据需要选择是或否。ssl协议版本根据需要选择,现在一般选择TLS v1.2和TLS v1.3。在http跳转https选择是,从该端口跳转地址设置为61.x1.x2.x3,端口为80。单击“添加代理目标”,添加放置www.chunhai.wang网站的内部服务器的IP地址及服务端口,当前示例为http://192.168.6.101。配置之后单击“提交”按钮,如图3所示。


使用nginxWebUI配置Web网站与端口转发​_服务器托管_04


图3 转发https网站

(3)如果要为内部的服务器提供端口映射,需要两步完成。例如以表1中序号为2的服务器为例进行介绍。首先在“负载均衡(upstream)”中单击“添加负载均衡”链接,在“添加负载均衡”对话框中,在转发类型下拉列表选择TCP/UDP,名称(示例)为192.168.6.100-3389,单击“添加负载”链接,ip为192.168.6.100,端口为3389。设置之后单击“提交”,如图4所示。

使用nginxWebUI配置Web网站与端口转发​_nginx_05


图4 添加负载均衡

添加负载均衡之后,然后添加反向代理。在“添加反向代理”对话框中,转发类型选择TCP/UDP,监听端口输入nginx外网IP地址(当前示例为61.x1.x2.x3),端口为30100(根据表1规划),指向负载均衡下拉列表选择192.168.6.100-3389,设置之后单击“提交”按钮。如图5所示。

使用nginxWebUI配置Web网站与端口转发​_nginx_06


图5 添加反向代理

表1中其他网站与服务器的端口映射请参照上面内容进行配置。配置之后反向代理内容如图6所示。

使用nginxWebUI配置Web网站与端口转发​_服务器托管_07


图6 反向代理

(4)当前使用nginxWebUI配置还没有在nginx中生效。如果要将使用nginxWebUI配置的内容保存到nginx配置文件中并生效。在“启用配置”中,先单击“检验文件”链接,检查配置是否正确,检验通过之后,单击“替换文件”链接,然后单击“重新装载”,nginx配置生效。如图7所示。

使用nginxWebUI配置Web网站与端口转发​_服务器托管_08


图7 启用配置

【说明】启用配置左侧窗口为当前使用nginxWebUI图形生成的配置文件,右侧是nginx的配置文件。如果配置有问题还可以单击“还原文件”,打开“还原文件”对话框。nginxWebUI会将每次配置都保存下来,可以根据需要进行还原。

5 在RHEL 8.6安装配置iptables

现在可以将内网的虚拟机使用nginx转发到互联网了,但是此时内网的虚拟机还不能访问Internet。如果要实现这个功能,需要在nginx的虚拟机配置iptables。在RHEL 8.6中带的是iptables 1.8.4版本,默认并没有安装,需要管理员手动安装并配置。

(1)执行如下命令,停止firewalld。

systemctl stop firewalld

(2)执行如下命令,开机禁用firewalld。

systemctl disable firewalld

(3)为虚拟机加载RHEL 8.6的安装ISO文件,安装iptables。命令如下。

mnt /dev/cdrom /mnt/cdrom

cd /mnt/cdrom

cd BaseOS/Packages/

rpm -Uvh iptables-services-1.8.4-22.el8.x86_64.rpm

(4)执行如下命令查询是否安装成功。

rpm -qa | grep iptables

(5)执行如下命令启动iptables,并将iptables配置为开机自启动。

systemctl start iptables.service

systemctl enable iptables.service

(6)执行如下命令,打开内核ip转发。使用vi编辑/etc/sysctl.conf ,修改以下内容。

net.ipv4.ip_forward = 1

保存退出,然后执行sysctl -p生效。

(7)配置iptables,为192.168.6.0/24(局域网地址段)配置nat,转发使用外网IP地址61.x1.x2.x3。

iptables -F

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.6.0/24 -o ens192 -j SNAT --to-source 61.x1.x2.x3

【说明】本示例将公网IP地址为61.x1.x2.x3代替。在实际的配置中,用你的公网IP地址代替。

(8)测试IP地址为192.168.6.0/24的虚拟机是否能访问Internet,生效之后保存配置

iptables-save > /etc/sysconfig/iptables

至此配置完成。

标签:Web,http,虚拟机,配置,端口,nginx,nginxWebUI
From: https://blog.51cto.com/wangchunhai/8308055

相关文章

  • 软件测试|web自动化测试神器playwright教程(三十八)
    简介在我们使用selenium时,我们可以获取元素的属性,元素的文本值,以及输入框的内容等,作为比selenium更为强大的web自动化测试神器,playwright也可以实现对元素属性,文本值和输入框内容的抓取,并且实现比selenium更为简单,本文我们就为大家介绍一下使用playwright获取元素属性,元素文本值以......
  • 怎么通过LiveNVR流媒体平台配置实现将海康Ehome、ISUP协议统一接入实现Web无插件播放
    @目录1、海康ISUP接入配置2、海康设备接入2.1、海康EHOME接入配置示例2.2、海康ISUP接入配置示例3、通道配置3.1、直播流接入类型海康ISUP3.2、海康ISUP设备ID3.3、启用保存3.4、接入成功4、相关问题4.1、其它方式接入4.2、如何输出GB281815、RTSP/HLS/FLV/RTMP拉流Onvif流媒......
  • docker修改宿主机为容器映射的端口
    1.先关闭容器root1@ubuntu22:~$dockerstop0912.再停止docker服务root1@ubuntu22:~$sudostopdocker3.进入配容器置文件目录修改hostconfig.json文件root@ubuntu22:/var/lib/docker/containers/091302dc373cfa10d414a115276a2a18304052721df6f59c85138......
  • 修改Web网页中资源加载的优先级
    在Chrome浏览器中,网络请求的优先级分成了5个等级:Highest最高,如页面HTML资源和CSS文件;High高,如正文图片请求资源;Medium中等,如页面的业务JavaScript文件请求;Low低,如内联的Base64资源,异步加载的JavaScript文件请求;Lowest最低,如发送的统计请求;调整preload预加载默认的优......
  • vue-cli-service vue.config.js配置 productionSourceMap与webpack中的devtool 关联详
    https://webpack.js.org/configuration/devtool/https://cli.vuejs.org/zh/config/#productionsourcemap https://github.com/vuejs/vue-cli/blob/f0f254e4bc81ed322eeb9f7de346e987e845068e/packages/%40vue/cli-service/lib/config/prod.js#L7 可以在源码中看到if(pro......
  • 13,zabbix web.page.regexp方法
    zabbix-agent#登录agent端,检查页面正常访问时的状态Copy]#curl-i10.117.x.x/path/login.jspHTTP/1.1200OK...#寻找正常页面返回中具有代表性的字符串zabbix-server#通过web.page.regexp匹配字符串检查状态Copy]#zabbix_get-s10.117.x.x-p10050-kweb.page.......
  • Centos8开放防火墙相关端口操作
    原文地址:https://blog.csdn.net/qq_36093146/article/details/131520827查看防火墙某个端口是否开放[root@test/]#firewall-cmd--query-port=3306/tcp开放防火墙端口3306#注意:开放端口后要重启防火墙生效[root@test/]#firewall-cmd--zone=public--add-port=3306/tcp--p......
  • 更改虚拟机ssh连接端口
    打开终端或命令提示符。使用文本编辑器(如nano、vim等)打开SSH配置文件。在大多数Linux发行版中,该文件位于/etc/ssh/sshd_config。例如,在Ubuntu和Debian上,可以使用以下命令打开文件:sudonano/etc/ssh/sshd_config在文件中找到并修改以下行:#Port22将其更改为所需的端口......
  • Streamlit项目:基于讯飞星火认知大模型开发Web智能对话应用
    文章目录1前言2API获取3官方文档的调用代码4Streamlit网页的搭建4.1代码及效果展示4.2Streamlit相关知识点5结语1前言科大讯飞公司于2023年8月15日发布了讯飞认知大模型V2.0,这是一款集跨领域知识和语言理解能力于一体的新一代认知智能大模型。前日,博主对讯飞认知大模型......
  • 修改运行中的docker容器的端口映射的三种方式
    前言在dockerrun创建并运行容器的时候,可以通过-p指定端口映射规则。但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改。当dockerstart运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则。那么这种情况我们该怎么处理呢?方法一:删除原有容器,重新建新容......