Nginx系列-1 Nginx安装与使用

背景

最近对项目进行了Https改造,改造过程涉及Nginx技术,因此进行简单总结。
从本文开始将开启一个新的专题Nginx系列,用于收集Nginx相关的文章,内容将包括:

  • Nginx系列—1 Nginx安装与使用
  • Nginx系列—2 Nginx配置
  • Nginx系列—3 支持Https
  • Nginx系列—4 Nginx启动流程
  • Nginx系列—5 Nginx消息处理流程
  • Nginx系列—6 Nginx自定义模块

本文介绍nginx安装过程和简单使用,以及如何将Nginx委托给systemd管理。

1.nginx编译与安装

1.1 依赖软件

(1) gcc编译器,用于编译C语言程序

yum install -y gcc
yum install -y gcc-c++

(2) pcre库,提供正则表达式能力

yum install -y pcre 
yum install -y pcre-devel

(3) zlib库,用于提供gzip压缩能力

yum install -y zlib
yum install -y zlib-devel

(4) openssl库,用于HTTPS能力

yum install -y openssl
yum install -y openssl-devel

说明:如果所需的Nginx不需要SSL能力,则不需要openssl库。

1.2 编译和安装

nginx资源包下载地址: http://nginx.org/download/, 可以选择所需的版本。这里以1.26.0版本为例进行介绍:

#下载资源
wget http://nginx.org/download/nginx-1.26.0.tar.gz# 解压资源
tar -zxvf nginx-1.26.0.tar.gz# 编译nginx
cd nginx-1.26.0/
./configure
./make# 安装nginx
./make install

configure命令检测操作系统类型、依赖的软件等,根据配置参数(后面介绍)生成C源码文件和Makefile文件; make根据configure命令生成的Makefile文件编译Nginx生成二进制文件; make install将编译结果安装到环境上。

上述执行configure命令时日志部分如下:

[root@124 nginx-1.26.0]# ./configure...+ using system PCRE library+ OpenSSL library is not used+ using system zlib library...

使用了PCRE和zlib,默认没有使用OpenSSL,即此案例编译生成的Nginx不支持HTTPS。

说明:执行configure命令时,支持传入配置参数定制Nginx,不传则使用Nginx的默认配置。

configure常用配置:

(1) 路径配置
–prefix 指定安装后Nginx的根目录,不指定时默认为/usr/local/nginx;至于其他相对于nginx根路径的配置,如sbin,conf,errorlog,pid等,一般不需要修改,使用Nginx的默认配置即可。

(2) http配置
nginx默认会将http必要的模块编译到nginx中,不需要额外指定;不需要对应模块,可以使用–without-http_xxx_module配置。
部分http模块提供定制的功能,需要用户通过配置指定,如下所示:
[1]–with-http_ssl_module 支持HTTPS模块(可通过–with-openssl=/path指定编译环境上openssl的路径)
[2]–with-http_realip_module 支持从客户端请求的Header信息中获取客户端真是IP地址
[3]–with-http_addition_module 支持在返回HTTP响应给客户端前在HTTP包体头部或尾部添加内容
[4]–with-http_sub_module 支持将HTTP响应包中指定字符串进行替换
[5]–with-http_flv_module和–with-http_mp4_module 客户端播放flv和map格式的视频时可以拖动

(3) 其他配置
–user和–group可用来指定Nginx运行时的用户

如nginx安装的路径为/usr/lcoal/ewen/nginx,且要求支持https, 上述./configure命令可以修改为:

./configure --prefix=/usr/lcoal/ewen/nginx --with-http_ssl_module --with-http_sub_module

1.3 目录介绍

上述通过–prex指定了nginx根路径为/usr/lcoal/ewen/nginx,在执行make install命令后,nginx被安装到了/usr/lcoal/ewen/nginx路径下:

[root@124 conf]# cd /usr/lcoal/ewen/nginx
[root@host44 conf]# ls -al
总用量 4
drwxr-xr-x. 2 root root 4096 630 11:26 conf
drwxr-xr-x. 2 root root   40 630 10:22 html
drwxr-xr-x. 2 root root    6 630 10:22 logs
drwxr-xr-x. 2 root root   19 630 10:22 sbin

存在sbin、logs、html、conf四个目录:
[1] sbin目录下只有一个nginx文件, 是可执行的二进制文件,用于启动/停止Nginx等;

[root@124 sbin]# ls -al
-rwxr-xr-x.  1 root root 3930704 630 10:22 nginx

说明:nginx默认已具备可执行权限。

[2] logs目录存放Nginx运行过程中产生的日志文件。

[3] html目录存放静态页面资源:

[root@124 html]# ls -al
-rw-r--r--.  1 root root 497 630 10:22 50x.html
-rw-r--r--.  1 root root 626 630 11:47 index.html

说明:当前只有两个文件, 50x.html和index.html分别表示异常页面和Nginx默认首页;

[4] conf目录用于存放nginx的配置文件:

[root@124 conf]# ls -al
-rw-r--r--.  1 root root 1077 6月  30 10:22 fastcgi.conf
-rw-r--r--.  1 root root 1077 6月  30 10:22 fastcgi.conf.default
-rw-r--r--.  1 root root 1007 6月  30 10:22 fastcgi_params
-rw-r--r--.  1 root root 1007 6月  30 10:22 fastcgi_params.default
-rw-r--r--.  1 root root 2837 6月  30 10:22 koi-utf
-rw-r--r--.  1 root root 2223 6月  30 10:22 koi-win
-rw-r--r--.  1 root root 5349 6月  30 10:22 mime.types
-rw-r--r--.  1 root root 5349 6月  30 10:22 mime.types.default
-rw-r--r--.  1 root root 2656 6月  30 10:22 nginx.conf
-rw-r--r--.  1 root root 2656 6月  30 10:22 nginx.conf.default
-rw-r--r--.  1 root root  636 6月  30 10:22 scgi_params
-rw-r--r--.  1 root root  636 6月  30 10:22 scgi_params.default
-rw-r--r--.  1 root root  664 6月  30 10:22 uwsgi_params
-rw-r--r--.  1 root root  664 6月  30 10:22 uwsgi_params.default
-rw-r--r--.  1 root root 3610 6月 30 10:22 win-utf

其中,xx.defualt文件是一个备份或示例配置文件,Nginx不会加载这些文件。如nginx.conf被修改后,可用nginx.conf.default还原nginx.conf至初始安装状态。
去除default文件后,余下配置文件可以分为以下4类:
[1] koi-win、koi-utf、win-utf
编码转换映射时需要的文件,向客户端发送响应时,将一种编码转换到另一种编码。

[2] fastcgi, scgi, uwsgi
分别用于 FastCGI、SCGI 、uWSGI 相关的配置(暂未接触过)。

[3] mime.types

文件扩展名与文件类型映射表,nginx将根据文件中的映射关系设置Http头域的的Content-Type值;
默认配置一般指定为application/octet-stream。在nginx.conf的http块中一般固定配置如下:

http {include       mime.types;default_type  application/octet-stream;#...其他配置    
}

[4] nginx.conf

当Nginx被当做反向代理服务器或者web应用时,nginx.conf是配置的核心。这部分内容较多,鉴于篇幅考虑,将在Nginx系列2中进行介绍。

2.nginx命令介绍

[1] 启动nginx:

./nginx# 可以使用 -c 指定配置文件路径
./nginx -c /etc/nginx/nginx.conf# 可以使用 -p 指定prefix 相对路径,此时会覆盖configure编译时执行的前缀
./nginx -p /usr/local/ewen/nginx

[2] 停止Ngnix

# 快速停止nginx
./nginx -s stop# 优雅停止,等所有请求处理完再停止
./nginx -s quit

[3] 重载配置文件

# 修改配置文件后,重新加载
./nginx -s reload

[4] 测试配置文件是否正常**

# 检测配置文件是否正常
./nginx -t

4.使用systemctl管理

说明:由于80端口在当前服务器上已被其他应用占有,案例将nginx.conf配置文件中的80端口修改为8000进行演示.

nginx.service 文件:

[Unit]
Description=nginx-ewen
After=network.target[Service]
User=ewen
Group=ewen
Type=forkingExecStart=/usr/local/ewen/nginx/sbin/nginx  -p /usr/local/ewen/nginx
ExecReload=/usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx -s reload
ExecStop=/usr/local/ewen/nginx/sbin/nginx   -p /usr/local/ewen/nginx -s stop
PrivateTmp=true[Install]
WantedBy=multi-user.target

nginx.service 文件放到**/etc/systemd/system**目录下,执行如下命令后将nginx委托给systemctl管理:

# systemd重载service配置文件
systemctl daemon-reload# 设置nginx开启自启动
systemctl enable nginx

由此,可通过systemctl命令来控制nginx的启停:

[root@124 conf]# systemctl start nginx
[root@124 conf]# systemctl status nginx
● nginx.service - nginx-ewenLoaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)Active: active (running) since 三 2024-06-30 12:17:16 CST; 8s agoProcess: 22705 ExecStop=/usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx -s stop (code=exited, status=0/SUCCESS)Process: 22920 ExecStart=/usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx (code=exited, status=0/SUCCESS)Main PID: 22922 (nginx)Tasks: 2CGroup: /system.slice/nginx.service├─22922 nginx: master process /usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx└─22923 nginx: worker process630 12:17:16 host44 systemd[1]: Starting nginx-ewen...
630 12:17:16 host44 systemd[1]: Started nginx-ewen.

查看nginx启动状态:

[root@124 conf]# ps -ef | grep nginx | grep -v grep
ewen     22922     1  0 12:17 ?        00:00:00 nginx: master process /usr/local/ewen/nginx/sbin/nginx -p /usr/local/ewen/nginx
ewen     22923 22922  0 12:17 ?        00:00:00 nginx: worker process[root@124 conf]# netstat -anp | grep 22922
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      22922/nginx: master
unix  3      [ ]         STREAM     CONNECTED     78715317 22922/nginx: master
unix  3      [ ]         STREAM     CONNECTED     78715316 22922/nginx: master

此时,nginx服务已经启动,属组为ewen, 监听的端口号为8000.

访问8000主页面:

[root@host44 conf]# curl http://localhost:8000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx gracefully.</em></p>
</body>
</html>

5.日志轮转

nginx日志需要借助日志轮转工具实现日志的备份和分割,已在前面的文章中介绍过,请参考:日志轮转—cron和logrotate.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次小程序渗透

这次的小程序渗透刚好每一个漏洞都相当经典所以记录一下。 目录 前言 漏洞详情 未授权访问漏洞/ 敏感信息泄露&#xff08;高危&#xff09; 水平越权&#xff08;高危&#xff09; 会话重用&#xff08;高危&#xff09; 硬编码加密密钥泄露&#xff08;中危&#xff0…

熟练掌握爬虫技术

一、Crawler、Requests反爬破解 1. HTTP协议与WEB开发 1. 什么是请求头请求体&#xff0c;响应头响应体 2. URL地址包括什么 3. get请求和post请求到底是什么 4. Content-Type是什么1.1 简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;…

整合 Mybatis Plus

什么是 MyBatis Plus&#xff1f; MyBatis Plus &#xff08;简称 MP&#xff09; 是一款持久层框架&#xff0c;说白话就是一款操作数据库的框架。它是一个 MyBatis 的增强工具&#xff0c;就像 iPhone手机一般都有个 plus 版本一样&#xff0c;它在 MyBatis 的基础上只做增强…

NOI大纲——普及组——编码

编码 ##ASCLL码 ASCII码&#xff08;American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09;是一种基于拉丁字母的字符编码方案&#xff0c;主要用于表示文本数据。ASCII码包含128个字符&#xff08;0-127&#xff09;&#xff0c…

2024最新boss直聘岗位数据爬虫,并进行可视化分析

前言 近年来,随着互联网的发展和就业市场的变化,数据科学与爬虫技术在招聘信息分析中的应用变得越来越重要。通过对招聘信息的爬取和可视化分析,我们可以更好地了解当前的就业市场动态、职位需求和薪资水平,从而为求职者和招聘企业提供有价值的数据支持。本文将介绍如何使…

python自动化办公之PyPDF2

用到的库&#xff1a;PyPDF2 实现效果&#xff1a;打开pdf文件&#xff0c;把每一页的内容读出来 代码&#xff1a; import PyPDF2 # 打开pdf文件 fileopen(friday.pdf,rb) # 创建pdf文件阅读器对象 readerPyPDF2.PdfReader(file) # 获取pdf文件的总页数 total_pageslen(rea…

Amazon Q——2023 re:Invent 大会的 AI 革新之星

引言 在2023年的 re:Invent 大会上&#xff0c;亚马逊云科技&#xff08;亚马逊云科技&#xff09;不仅展示了包括 Amazon Graviton3、Amazon SageMaker Studio Lab、Amazon Connect Wisdom、Amazon QuickSight Q 和 Amazon Private 5G 在内的多项创新产品&#xff0c;还发布了…

【python爬虫】豆瓣爬虫学习

文章目录 网页地址爬虫目标技术栈爬虫代码注意事项 Python爬虫学习&#xff1a;我们可以选择一个相对简单的网站进行数据抓取。这里以抓取“豆瓣电影Top250”的信息为例&#xff0c;这个网站提供了丰富的电影数据&#xff0c;包括电影名称、评分、导演、演员等信息。 网页地址…

AI大模型技术在音乐创造的应用前景

大模型技术在音乐创作领域具有广阔的应用前景&#xff0c;可以为音乐家、作曲家和音乐爱好者提供以下方面的帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 音乐创作辅助&#xff1a;大模型可以帮助音乐家和作曲家生成旋律、和声…

Win脚本开机自启ALIst和RClone

转自个人博客&#xff1a;https://www.jjy2023.cn/2024/05/23/win%e8%84%9a%e6%9c%ac%e5%bc%80%e6%9c%ba%e8%87%aa%e5%90%afalist%e5%92%8crclone/ 在配置完alist和rclone之后&#xff0c;就只需要每次开机启动两者就行了&#xff0c;所以感觉使用AListHelper没有必要&#xff…

算法金 | 协方差、方差、标准差、协方差矩阵

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 抱个拳&#xff0c;送个礼 1. 方差 方差是统计学中用来度量一组数据分散程度的重要指标。它反映了数据点与其均值之间的偏离程度。在…

Flask无法Debug

问题描述 Flask Debug的时候&#xff0c;可能会无法进入断点。我使用的是pycharm CE版本。 解决方案 确保pycharm安装路径不带空格。&#xff08;带空格路径导致debug程序启动报错&#xff09;Gevent compatible&#xff0c;这个东西老的pycharm版本必须勾选它&#xff0c;新…

中霖教育靠谱吗?在职备考一建好通过吗?

中霖教育靠谱吗?在职备考一建好通过吗? 课程设置&#xff1a;报名后会进行测评&#xff0c;了解学员的知识掌握情况、时间安排和记忆思维特点等&#xff0c;制定更适合的学习计划。 课程以考试通过为目标&#xff0c;去繁化简&#xff0c;只讲有用的干货&#xff0c;帮助快…

Python的GIL

Python的GIL是什么&#xff1f;它对多线程编程有什么影响&#xff1f; GIL&#xff08;全局解释器锁&#xff09;是Python解释器中的一个机制&#xff0c;它是为了保证在任何时刻只有一个线程执行Python字节码。GIL的存在主要因为Python的内存管理和垃圾回收机制是线程不安全的…

使用Vite工具创建项目,并使用Vue Router步骤

步骤 1: 安装 Vite 首先&#xff0c;确保你的电脑上已经安装了Node.js和npm。然后&#xff0c;通过以下命令全局安装Vite&#xff08;如果已经安装&#xff0c;请跳过此步骤&#xff09;&#xff1a; npm install -g create-vite步骤 2: 创建新的Vue项目 使用Vite创建一个新…

Python 学习之标准库(二)

Python标准库是指Python编程语言自带的一组模块和包&#xff0c;它们是Python语言的核心组成部分&#xff0c;为开发者提供了丰富的功能和工具&#xff0c;帮助快速实现各种功能需求。以下是对Python标准库的一些主要内容和模块的归纳&#xff1a; 1. 数学计算&#xff1a; a.…

Python驱动的智能客服系统构建实录

Python驱动的智能客服系统构建实录 作为技术领域的老将&#xff0c;今天我打算带大家深挖一个热门应用——智能客服系统&#xff0c;并且如何通过Python这门万能钥匙&#xff0c;结合前沿的深度学习技术&#xff0c;赋予其更为人性化、高效的沟通能力。同时&#xff0c;我们不…

VLOOKUP函数在表格的简单运用-两个表匹配

1.什么是VLOOKUP&#xff1f; VLOOKUP是Excel中的一个内置函数&#xff0c;主要用于在区域或表格的首列查找指定的值&#xff0c;并返回该行中其他列的值。它特别适用于跨表格数据匹配 2.函数运用 2.1.这边两个表取名a表和b表&#xff0c;做为我们的实例表。 表格a包含&…

第二十一站:Java的多彩之旅终结篇

异步编程与反应式系统&#xff1a;应对高并发挑战 随着互联网应用对响应速度和并发处理能力要求的提高&#xff0c;Java生态系统也与时俱进&#xff0c;引入了异步编程模型和反应式编程框架&#xff0c;以应对现代应用的挑战。 异步编程 Java 8引入了CompletableFuture&…

JavaScript高级程序设计(第四版)--学习记录之迭代器与生成器(上)

什么是迭代&#xff1f; 迭代的意思是按照顺序反复多次执行一段程序。循环是迭代机制的基础&#xff0c;因为它可以指定迭代的次数&#xff0c;以及每次迭代要执行的操作。 迭代器模式 迭代器模式描述了一个方案&#xff0c;可以把有些结构称为“可迭代对象” &#xff0c;这些…