使用systemd管理多nginx服务以及单nginx服务实现多vhost访问的操作步骤
2021/11/1 7:09:48
本文主要是介绍使用systemd管理多nginx服务以及单nginx服务实现多vhost访问的操作步骤,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
背景
- nginx是开源的web服务器, 性能与可配置性和插件做的非常完善.
- 可以使用简单的命令拉起来nginx进行服务提供,但是有时候需要使用keepalive等软件实现保活,以及实现开启启动等,比较繁琐一些.
- IPV4 外网资源比较昂贵,也比较缺少, 所以有时候很多客户,需要同一个外网IP地址对应多个服务,提供多种不同的服务供大家访问.
- nginx的配置文件比较简介,但是还需要万分注意.
设置systemd作为后台服务
- 前期已经写过很多blog说明systemd脚本的编写方法
- 举例一个最简单的服务脚本为:
cat /etc/systemd/system/nginx.service [Unit] Description=nginx [Service] Type=forking ExecStart=/data/nginx/nginx -c /data/nginx/nginx.conf Restart=always LimitNOFILE=64000 [Install] WantedBy=multi-user.target
systemd参数说明
- unit指名本服务的服务单元, 可以使用 journalctl -xe -u nginx 的命令来查看具体的操作日志.
- Service 是核心配置, 里面包含多种命令参数
- ExecStart 指名服务启动时需要执行的命令, 比如这个简单脚本里面就是 /data/nginx/nginx -c /data/nginx/nginx.conf 使用编译好的二进制 直接关联 配置文件来启动.
- Restart 指代 服务异常关闭后的处理, 设置为 always 会自动再将服务拉起来, 只要systemd的进程不死, 会一直尝试启动nginx的服务.
- Type 参照别人的文章
systemd参数说明
- 来源: https://www.jianshu.com/p/c579a5eee542
Type=oneshot 这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。 Type=notify 与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。 Type=dbus 若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。 Type=idle systemd 会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与 Type=simple 类似。 Type=forking systemd 认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。 使用此启动类型应同时指定 PIDFile=,以便 systemd 能够跟踪服务的主进程 Type=simple (默认值) systemd认为该服务将立即启动。服务进程不会 fork 。 如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket 激活型。
启动多个服务的方式来提供多种服务
- 有时候nginx服务器的资源比较有限,可能需要同时提供给多个项目组环境使用, 这种情况下有两种方式来提供, 第一种是多端口的方式, 第二种时多vhost的方式, 各有优缺点, 这里先讲解一下多端口的方式
- 多端口的方式有一个比较大的好处, 不通的nginx服务之间是互相隔离的, 可以关闭一个nginx 而不影响其他人, 如果有某个项目组写错了配置文件, 启动不起来, 也仅仅影响写错模块的功能,不会有全局性的问题.
- 多端口的缺点就是管理起来稍显复杂一些. 需要记住具体的端口信息等, 监控起来也比较繁琐.
启动多个服务的方式来提供多种服务
- 方法简介 (本文以/data/nginx 作为工作目录来说明)
方法分五步: 第一步: 在/data/nginx/ 下面添加新的nginx配置文件. 比如添加一个 nginx88.conf.指代新端口. 第二步: 在/etc/systemd/system 的目录下复制一份 nginx.service 比如复制为 nginx88.service 第三步: 修改 nginx88.service 里面的 ExecStart=/data/nginx/nginx -c /data/nginx/nginx88.conf 设置指向一个新的配置文件. 第四步: systemctl enable nginx88 && systemctl restart nginx88 第五步: 验证 ip:88 端口是否可用.
启动多个vhost的方式来提供多种服务
- nginx一个很优秀的特性是可以实现在一个出口ip的情况下实现多域名绑定.
- nginx的多vhost的访问有两种方式进行处理
第一种: 在nginx.conf 里面直接进行修改. 可以在http的配置节下面进行处理,添加server的配置节,比如我添加如下 server { listen 777; server_name zhaobsh001.com; location / { root html001; index index.html index.htm; } } server { listen 777; server_name zhaobsh002.com; location / { root html002; index index.html index.htm; } } 注意: 需要与配置文件之前已经有的 server同级. 注意: 可以修改/data/nginx/目录下 添加html001和html002 等目录,修改title的内容进行打开验证 注意: 可以修改c:\windows\system32\drivers\etc\hosts文件进行指向. 注意: 设置完成后就可以使用 zhaobsh001.com:777 与 zhaobsh002.com:777 进行比较验证 这种方式可以实现 多vhost的绑定.
启动多个vhost的方式来提供多种服务
- 第二种方式是使用
include
的语法
可以在 /data/nginx/nginx.conf 内部添加 include conf.d/*.conf ; 的命令来添加vhost的配置. 注意 可以先期创建目录 /data/nginx/conf.d 注意 可以在内部添加两个配置文件, 比如 zhaobsh003.conf和zhaobsh004.conf 并且与 zhaobsh001 一样也在 /data/nginx 目录下添加一个html003以及html004的配置文件便于验证. 注意与在nginx.conf 里面的配置一样. conf.d 下面的配置文件也只需要添加一个 server的配置节段即可. 如下所示. -rw-r--r-- 1 root root 178 10月 31 23:47 zhaobsh003.conf -rw-r--r-- 1 root root 178 10月 31 23:47 zhaobsh004.conf [root@gscloudink8s conf.d]# pwd /data/nginx/conf.d 注意: 文件内容也比较简单 [root@gscloudink8s conf.d]# cat zhaobsh003.conf server { listen 777; server_name zhaobsh003.com; location / { root html003; index index.html index.htm; } }
启动多个服务的方式来提供多种服务
systemctl restart nginx
重启服务- 修改hosts指向后, 直接打开浏览器进行验证 我这边只举一个例子.
这篇关于使用systemd管理多nginx服务以及单nginx服务实现多vhost访问的操作步骤的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享