深入浅出学习透析 Nginx 服务器的基本原理和配置指南「运维操作实战篇」

news2024/11/18 16:45:23

Nginx前提回顾

Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:

  • Web服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.

  • 负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

  • 邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,且Nginx 启动特别容易,并且几乎可以做到24小时不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行软件版本的升级。接下来我们要针对于安装和运维操作进行实战和分析。

Nginx安装指南

Windows 安装

  1. 首先,进入官方下载地址,如下图所示,之后我们选择合适版本(nginx/Windows-xxx),进行点击下载。

  1. 下载结束之后进行解压操作

  1. 启动Nginx服务即可

使用CMD命令start命令启动nginx,再运行nginx,到nginx所在目录,如果启动前已经启动nginx并记录下pid文件,会kill指定进程,按照指定配置去启动nginx

nginx.exe -c conf/nginx.conf

-t:代表测试配置文件语法正确性

nginx.exe -c -t conf\nginx.conf
  1. 启动Nginx服务即可
nginx.exe -s stop
  1. 显示版本信息
nginx.exe -v
  1. 访问测试

启动成功后,浏览器访问 localhost,即可看到Nginx 欢迎页

Windows下的Nginx命令介绍

Nginx 的使用比较简单,就是几条命令,常用到的命令如下(nginx.exe 可以等价于nginx):

  • nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
  • nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
  • nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
  • nginx -s reopen 重新打开日志文件。
  • nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。
  • nginx -t 不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
  • nginx -v 显示 nginx 的版本。
  • nginx -V 显示 nginx 的版本,编译器版本和配置参数。

MacOSX 安装

Mac OSX 安装特别简单,首先你需要安装 Brew, 通过 brew 快速安装 nginx。

安装nginx

brew install nginx
# Updating Homebrew...
# ==> Auto-updated Homebrew!
# Updated 2 taps (homebrew/core, homebrew/cask).
# ==> Updated Formulae
# ==> Installing dependencies for nginx: openssl, pcre
# ==> Installing nginx dependency: openssl
# ==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2o_1.high_sierra.bottle.tar.gz
# ######################################################################## 100.0%
# ==> Pouring openssl-1.0.2o_1.high_sierra.bottle.tar.gz
# ==> Caveats
# A CA file has been bootstrapped using certificates from the SystemRoots
# keychain. To add additional certificates (e.g. the certificates added in
# the System keychain), place .pem files in
#   /usr/local/etc/openssl/certs
# 
# and run
#   /usr/local/opt/openssl/bin/c_rehash
# 
# This formula is keg-only, which means it was not symlinked into /usr/local,
# because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.
# 
# If you need to have this software first in your PATH run:
#   echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc
# 
# For compilers to find this software you may need to set:
#     LDFLAGS:  -L/usr/local/opt/openssl/lib
#     CPPFLAGS: -I/usr/local/opt/openssl/include
# For pkg-config to find this software you may need to set:
#     PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
# 
# ==> Summary
# ?  /usr/local/Cellar/openssl/1.0.2o_1: 1,791 files, 12.3MB
# ==> Installing nginx dependency: pcre
# ==> Downloading https://homebrew.bintray.com/bottles/pcre-8.42.high_sierra.bottle.tar.gz
# ######################################################################## 100.0%
# ==> Pouring pcre-8.42.high_sierra.bottle.tar.gz
# ?  /usr/local/Cellar/pcre/8.42: 204 files, 5.3MB
# ==> Installing nginx
# ==> Downloading https://homebrew.bintray.com/bottles/nginx-1.13.12.high_sierra.bottle.tar.gz
# ######################################################################## 100.0%
# ==> Pouring nginx-1.13.12.high_sierra.bottle.tar.gz
# ==> Caveats
# Docroot is: /usr/local/var/www
# 
# The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
# nginx can run without sudo.
# 
# nginx will load all files in /usr/local/etc/nginx/servers/.
# 
# To have launchd start nginx now and restart at login:
#   brew services start nginx
# Or, if you don't wacd /usr/local/Cellar/nginx/1.13.12/n just run:
# cd /usr/local/Cellar/nginx/1.13.12/

启动服务

注意默认端口不是80查看确认端口是否被占用。

brew services start nginx

http://localhost:8080/

CentOS安装

Nginx可以使用各平台的默认包来安装,包括具体的编译参数信息。正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好。CentOS6.5左右默认这两个包都没安装全,所以这两个都运行安装即可。

yum -y install gcc make gcc-c++ wget
yum -y install openssl openssl-devel

安装依赖

prce(重定向支持)和openssl(https支持,如果不需要https可以不安装。)

yum install -y pcre-devel 

其他版本也可以采用一下指令执行

安装make:
yum -y install gcc automake autoconf libtool make
安装g++:
 yum -y install gcc make gcc-c++ openssl-devel

如果不安装会出现安装报错误的话比如:“C compiler cc is not found”,这个就是缺少编译环境,安装一下就可以了。

下载

下载Linux版本的地址根页面:http://nginx.org/download/,如下图所示。

如果没有安装wget

下载已编译版本
yum install wget
wget http://nginx.org/download/nginx-1.X.X.tar.gz
解压压缩包
tar -zxvf nginx-X.X.X.tar.gz
编译安装

然后进入目录编译安装,configure参数说明

cd nginx-1.xx
./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.34 \
--with-zlib=/usr/local/src/zlib-1.2.8 \
--with-openssl=/usr/local/src/openssl-1.0.1c
configure参数配置介绍

./configure --prefix=/你的安装目录 --add-module=/第三方模块目录

  • —prefix=path 定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
  • —sbin-path=path 设置nginx的可执行文件的路径,默认为 prefix/sbin/nginx.
  • —conf-path=path 设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
  • —pid-path=path 设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
  • —error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
  • —http-log-path=path 设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log.
  • —user=name 设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
  • —group=name 设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
  • —with-select_module``—without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
  • —with-poll_module``—without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
  • —without-http_gzip_module — 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
  • —without-http_rewrite_module 不编译重写模块。编译并运行此模块需要PCRE库支持。
  • —without-http_proxy_module — 不编译http_proxy模块。
  • —with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
  • —with-pcre=path — 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
  • —with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
  • —with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.5)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
  • —with-cc-opt=parameters — 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:—with-cc-opt=“-I /usr/local/include。.如需要需要增加 select()支持的文件数量:—with-cc-opt=”-D FD_SETSIZE=2048".
  • —with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:—with-ld-opt=“-L /usr/local/lib”.

kqueue(sun os),epoll (linux kenel 2.6+), rtsig(- 实时信号)或者/dev/poll(一种类似select的模式,底层实现与SELECT基本相 同,都是采用轮训方法) SELECT模式将是默认安装模式

启动后会进行打印对应的配置信息

....
Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library
  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

Requires OpenSSL. On Debian, this is libssl-dev. 开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl

编译源码

配置完成之后,使用 make 和 make install 编译和安装 nginx。

rpm 包方式(推荐)

  1. 进入下载页面:http://nginx.org/packages/

  1. 选择合适版本下载:http://nginx.org/packages/centos/7/noarch/RPMS,如下图所示。

$ wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  1. 安装 nginx rpm 包

nginx rpm 包实际上安装的是 nginx 的 yum 源。

$ rpm -ivh nginx-*.rpm
  1. 正式安装 rpm 包
$ yum install nginx
  1. 关闭防火墙
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --reload
make
make install

CentOS7 环境安装脚本

安装说明

  • 采用编译方式安装 Nginx, 并将其注册为 systemd 服务

  • 安装路径为:/usr/local/nginx

  • 默认下载安装 1.16.0 版本

使用方法

默认安装 - 执行以下任意命令即可:

curl -o- https://gitee.com/turnon/linux-tutorial/raw/master/codes/linux/soft/nginx-install.sh | bash
wget -qO- https://gitee.com/turnon/linux-tutorial/raw/master/codes/linux/soft/nginx-install.sh | bash

自定义安装 - 下载脚本到本地,并按照以下格式执行:

sh nginx-install.sh [version]

服务管理(1)

启动
/usr/local/nginx/sbin/nginx
重启
/usr/local/nginx/sbin/nginx -s reload
关闭进程
/usr/local/nginx/sbin/nginx -s stop
平滑关闭nginx
/usr/local/nginx/sbin/nginx -s quit
查看nginx的安装状态,
/usr/local/nginx/sbin/nginx -V

服务管理(2)

启动nginx服务
systemctl start nginx.service
停止开机自启动
systemctl disable nginx.service
查看服务当前状态
systemctl status nginx.service
查看所有已启动的服务
systemctl list-units --type=service
重新启动服务
systemctl restart nginx.service
设置开机自启动
systemctl enable nginx.service
检查服务状态
systemctl is-enabled servicename.service # 查询服务是否开机启动
systemctl enable *.service # 开机运行服务
systemctl disable *.service # 取消开机运行
systemctl start *.service # 启动服务
systemctl stop *.service # 停止服务
systemctl restart *.service # 重启服务
systemctl reload *.service # 重新加载服务配置文件
systemctl status *.service # 查询服务运行状态
systemctl --failed # 显示启动失败的服务

Nginx卸载指南

如果通过yum安装,使用下面命令安装。

yum remove nginx

编译安装,删除/usr/local/nginx目录即可,如果配置了自启动脚本,也需要删除。

防火墙管理

CentOS 7或RHEL 7或Fedora中防火墙由 firewalld 来管理

假如采用传统请执行一下命令:

传统命令

systemctl stop firewalld
systemctl mask firewalld

或者设置防火墙过滤规则

Iptables 是用来设置、维护和检查 Linux内核 的IP包过滤规则的。

安装命令

yum install iptables-services
systemctl enable iptables 
service iptables restart

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

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

相关文章

python中利用随机数绘制曲线

使用python绘制数学函数图像很方便,在构造函数自变量取值时可以利用随机数生成模块,因本人工作需要,现将python中随机数的使用,以及二次函数图像绘制进行梳理总结 目录 1. python中的随机数产生 1.1 random模块 1.1 numpy.ran…

基于Zephyr平台nRF Connect SDK在Windows10下开发环境的快速搭建

基于Zephyr平台nRF Connect SDK在Windows10下开发环境的快速搭建 前言. Nordic开发SDK需要在线搭建,对于网络不太好的,实在是费时费力,该文特点是利用拷贝已经搭建好的一个SDK目录,直接在新的PC平台实现大部分文件的离线安装&…

职业成功指南:10条核心原则(下)丨三叠云

本期继续讲一下职场。 我将通过这两期的内容,为你提供一套简单的核心原则,希望能在职业道路上帮助到你。 让我们一起走进《职业成功指南:10条核心原则》下期 6. 避免攀比陷阱 在职业生涯的早期,你很容易将自己与周围的人进行比…

《Linux运维总结:Centos7.6部署二进制mongodb4.2.23三节点副本集群》

一、Mongodb集群模式 1、三种集群介绍 MongoDB有三种集群部署模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。 1、Master-Slaver 是一种主从副本的模式&#x…

[附源码]计算机毕业设计智慧园区运营管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

详解设计模式:观察者模式

观察者模式(Observer Pattern)也被称为发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式,是在 GoF 23 种设计模式中定义了的行为型模式。 观察者模式 定义了一对多的关系&#xff…

牛客网最新Java面试通关八股文手册,花点耐心每天刷上10道题,挑战一下年薪50W!

明年金三银四不少人已经蓄势待发,信心满满地准备投递简历,到处面试,在不同的 Offer 之中择优而栖。 与此同时,也有人会悔恨自己这半年进步不大,每天噼里啪啦敲代码,但面对那些不能再熟悉的 Java 面试题时&…

H2N-Val-Pro-Pro-COOH,58872-39-2

H-Val-Pro-Pro-OH,是牛奶来源的脯氨酸肽衍生物,是血管紧张素 I 转化酶 (ACE) 的抑制剂,其IC50 为 9 μM。H-Val-Pro-Pro-OH, a milk-derived proline peptides derivative, is an inhibitor of Angiotensin I converting enzyme (ACE), with …

C++手敲基于梯度图和像素数量数组的OTSU阈值分割

一、OTSU算法原理 ➢OTSU法(最大类间方差法,有时也称之为大津算法) ➢ 使用聚类的思想,把图像的灰度数按灰度级分成2个部分, 使得两个部分之间的灰度值差异最大,每个部分之间的灰 度差异最小 ➢ 通过方…

数学建模-2022年亚太赛C题(含思路过程和代码)

目录 一、题目以及大概的思路 二、数据预处理 三、预测模型 四、全球变暖的相关性分析 五、赛后总结 一、题目以及大概的思路 先对数据进行无量纲化处理,根据所给不确定度与数据,计算出相对不确定度,并将其异常点剔除,通常情况…

[附源码]计算机毕业设计病房管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Cisco ASA防火墙——远程控制与多安全区域

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.远程管理ASA 1.配置Telnet接入 2.配置SSH接入 3.配置ASDM接…

Java数据结构与Java算法学习Day02---算法排序

目录 一、简单排序 1.1Comparable接口介绍 11 1.2冒泡排序 12、13、14 1.3选择排序 15、16、17 1.4插入排序 18、19、20 二、高级排序 2.1希尔排序 21、22、23 2.2归并排序 24 2.2.1递归 24 2.2.2归并排序 25 2.3快速排序 32 2.3.1快速排序的原理 32 2.3.2快速排序…

这可能是我见过最可爱的乒乓女孩了!

3D角色艺术家Carlos Sanz曾在U-tab学习动画,在CICE学习角色创作,现在正致力于创作她的作品集并成为3D动画行业的一员,本文是作者在ZBrush和Maya等软件中设计乒乓女孩角色造型的教程: 首先给大家做个自我介绍。我叫Carlos Sanz&am…

[附源码]计算机毕业设计springboot网上电影购票系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

(阅读笔记)急性卒中CT灌注分析在临床中的实际问题

(阅读笔记)急性卒中CT灌注分析在临床中的实际问题IntroductionUnderstanding the basics of CTP acquisition and processingCTP thresholds and quantificationPitfalls of perfusion imagingTechnical pitfallsPatient motionContrast bolusRadiationC…

CMMI和SPCA是一样的吗?有什么区别

CMMI资质相信有很多企业都了解了,对于SPCA可能有些企业是比较陌生的,不太了解什么是SPCA,简单来说可以理解为CMMI是国外的资质,而SPCA可以理解为国内的,那现在就跟随同邦信息科技的小编一起来看看具体的区别是哪些吧 C…

进程以及线程

目录 🐼今日良言:希望是生命的源泉,失去它生命就会枯萎。 🐯一、进程 🐕1.概念 🐕2.PCB 🐕3.进程调度 🐭二、线程 🐑1.概念 🐇三、进程和线程的联系和区别 &…

Qt实现抽奖程序

一、简介 该程序命名为Lucky,实现的功能如下: 1. 加载抽奖人员名单,并保存加载路径; 2. 单击左键或者点击ctrls开始抽奖,并滚动显示人员名单,显示的人员名单格式为 部门-姓名。 3. 单击左键或者点击ctrls…

了解并应用数字隔离器的安全限值

介绍 电流隔离在工业和汽车系统中很常见,作为防止高电压或抵消接地电位差的一种手段。设计人员传统上使用光耦合器进行隔离,但在过去几年中,使用电容和磁隔离的数字隔离器变得越来越流行。对于任何此类隔离器,了解其安全限值的重…