CentOS 8 下 nginx 服务器安装及配置笔记
安装
在CentOS下,nginx官方提供了安装包可以安装
首先先安装前置软件
sudo yum install yum-utils
然后将nginx官方源加入到yum源中
#/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
nginx分为稳定和主线分支两个分支,默认为稳定分支,可以根据需要切换为主线分支sudo yum-config-manager --enable nginx-mainline
使用命令就可以安装nginx了
sudo yum install nginx
nginx运行管理
执行nginx命令可以开启服务器。
-?参数可以获取更多命令行参数
nginx -s stop|quit|reload|reopen可以控制服务器直接退出|结束工作并退出|重新加载配置文件(重启)|重新打开日志文件
ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'可以列出nginx的主进程pid和工作进程pid。
除了直接使用nginx命令管理服务器,还可以通过系统信号的方式向nginx传递信号,如kill -s QUIT 1628
nginx支持以下信号:
TERM, INT 直接关闭
QUIT 完成工作后关闭
HUP 重新加载配置并重启
USR1 重新打开日志文件
USR2 升级可执行文件
WINCH 关闭正常工作进程
其中加粗的可以直接控制单个工作进程。
通过信号机制,可以在不停机的情况下切换日志文件或者升级ngnix程序。
nginx配置
配置文件
nginx的配置文件放在/usr/local/nginx/conf,/etc/nginx或 /usr/local/etc/nginx中,默认文件名为nginx.conf。
可以将nginx程序相关配置放在nginx.conf中,将具体的服务相关放在conf.d文件夹下,然后通过在nginx.conf中include进去(还可以创建一个servers文件夹,放配置文件,然后通过创建软连接的方式链接到conf.d文件夹中,就可以通过命令行动态管理nginx配置)。
nginx配置文件以#为注释符号,每行配置以;为结束符号。
nginx配置文件遵循全局包括events、http块,http块包括server块,server块包括location块的结构。
nginx进行转发匹配时,优先全部匹配,没有完全匹配时进行最长的匹配。
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块,PATTERN支持正则表达式和等号判断
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
- 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
- events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
- http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
- server块:配置虚拟主机的相关参数,一个http中可以有多个server。
- location块:配置请求的路由,以及各种页面的处理情况。
块命令
| 命令 | 位置 | 作用 | 参数 |
|---|---|---|---|
| use | 全局块 | 可以设定链接处理方式 | select,poll,kqueue,epoll,/dev/poll,eventport之一,默认为前两个,在Linux上推荐使用epoll |
| error_log | 全局块或server块 | 可以设置服务器日志记录文件和级别,下级弱设置项会被上级覆盖 | 有debug、info、notice、warn、error、crit级别可选,可以记录到文件也可以记录到内存memory:32m debug; |
| debug_connection | event块 | 设定只记录某个特定的IP的debug信息 | IP地址 |
| servernames_hash_max_size | http块 | nginx使用哈希表储存信息,该项可以设定哈希表的最大大小 | 最好为CPU种cache的倍数 |
| servernames_hash_bucket_size | http块 | 该项可以设定哈希表的桶大小 | 最好为CPU种cache的倍数 |
| listen | server块 | 监听端口号,可以通过default_server参数设定默认服务器,默认第一个为默认服务器 | 80等 |
| server_name | server块 | 进行匹配的服务名。该项支持正则表达式,此时必须以~作为开头,包含{}的地址应加""符号 | 比如www.cnblogs.com或IP地址 |
| return | server块 | 返回值,比如返回444这样的未定义的HTTP状态码 | 444 |
| root | server或location块 | 可以设定请求重定向到的目录。 | 本地目录 |
| listen | server块 | 可以设定server监听的端口 | 端口号 |
| proxy_pass | location块 | 可以将请求进行代理转发 | 地址和接口 |
| fastcgi_pass | location块 | 可以对PHP或其他语言提供的cgi接口进行代理转发 | 地址和接口 |
| fastcgi_param | location块 | 传递参数 | 在PHP中,后跟SCRIPT_FILENAME和脚本名为转发到某个脚本,后跟QUERY_STRING为转发到脚本的参数字符串 |
变量列表
nginx中存在一些全局变量。
$args:这个变量等于请求行中的参数,同$query_string。
$is_args: 如果已经设置$args,则该变量的值为"?",否则为""。
$content_length: 请求头中的Content-length字段。
$content_type: 请求头中的Content-Type字段。
$document_uri: 与$uri相同。
$document_root: 当前请求在root指令中指定的值。
$host: 请求主机头字段,否则为服务器名称。
$http_user_agent: 客户端agent信息。
$http_cookie: 客户端cookie信息。
$limit_rate: 这个变量可以限制连接速率。
$request_method: 客户端请求的动作,通常为GET或POST。
$remote_addr: 客户端的IP地址。
$remote_port: 客户端的端口。
$remote_user: 已经经过Auth Basic Module验证的用户名。
$request_body_file`: 客户端请求主体的临时文件名。
$request_uri: 请求的URI,带参数
$request_filename: 当前请求的文件路径,由root或alias指令与URI请求生成。
$scheme: 所用的协议,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;。
$server_protocol: 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$server_addr: 服务器地址,在完成一次系统调用后可以确定这个值。
$server_name: 服务器名称。
$server_port: 请求到达服务器的端口号。
$request_uri: 包含请求参数的原始URI,不包含主机名,如:/foo/bar.php?arg=baz,它无法修改。
$uri: 不带请求参数的当前URI,$uri不包含主机名,如/foo/bar.html可能和最初的值有不同,比如经过重定向之类的。它可以通过内部重定向,或者使用index指令进行修改。不包括协议和主机名,例如/foo/bar.html。
反向代理
nginx的负载均衡功能依赖于ngx_http_upstream_module模块,通过upstream伪指令设置后端,支持轮询/带权轮询/最少链接/ip-hash四种方式。
例如:
upstream dynamic {
ip_hash
server backend1.example.com weight=5;
server backend2.example.com:8080 fail_timeout=5s slow_start=30s;
server 192.0.2.1 max_fails=3;#最大失败次数
server backend3.example.com resolve;
server backup1.example.com:8080 down;#暂不参与负载均衡
server backup2.example.com:8080 backup;#预留后备服务器
}
然后使用proxy_pass http://dynamic这样的命令即可进行反向代理。
njs
可以使用njs在配置文件中进行一些判断或者流程控制。
cache
CentOS 8 下 nginx 服务器安装及配置笔记的更多相关文章
- linux下WEB服务器安装、配置VSFTP
转载 http://www.oicto.com/centos-vsftp/?tdsourcetag=s_pcqq_aiomsg linux下WEB服务器安装.配置VSFTP 由 admin · 发布 ...
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
c#实例化继承类,必须对被继承类的程序集做引用 0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...
- [转载]Ubuntu下Git服务器安装与配置
原文地址:Ubuntu下Git服务器安装与配置作者:F民抄 1. 安装 1.1 安装Git-Core: sudo apt-get install git-core 1.2 安装 Gitosis sud ...
- centos7系统下nginx安装并配置开机自启动操作
准备工作 我的centos7系统是最小化安装的, 缺很多库, 首先安装必须的运行库 ? 1 2 3 4 5 6 7 8 9 10 11 yum install wget gcc gcc-c++ pcr ...
- (转)CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup
CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup 原文:http://qizhanming.com/blog/2017/05/10/install-percona- ...
- Linux/CentOS环境下如何安装和配置PhantomJS工作环境
PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, C ...
- Centos下 Nginx安装与配置
网上找了好多资料.都很难找全,这里以这个目录为主,进行备注. Nginx是一款轻量级的网页服务器.反向代理服务器.相较于Apache.lighttpd具有占有内存少,稳定性高等优势.它最常的用途是提供 ...
- CentOS下nginx+php的配置及nginx开机启动配置
关闭防火墙 (不然外链接是访问不了 apache) service iptables stop 关闭安全系统 SELinux( 不然报403 访问页面错误 ) 1.Nginx安装主要在于配置文件的修改 ...
- centos下Nginx安装和配置多个域名的虚拟主机
nginx安装步骤,源码编译安装(源码编译,可以自定制更多功能) openssl #user nobody; worker_processes ; #error_log logs/error.log; ...
随机推荐
- Help library 安装arcobjects for .NET异常问题
新建一个reg文件写入,也可以导出一个reg文件在上面重新写入. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\CLSID\{9DAA ...
- linux下部署nginx服务
1.安装依赖包 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2.下载并解压安装包 cd /usr/loc ...
- 牛客挑战赛34 A~E
闷声发大财 A O(nmk)dp即可,因为带了1/2的常数+2s所以很稳 #include <algorithm> #include <iostream> #include & ...
- python中的文件读取
---恢复内容开始--- r模式,只读模式,不可写入,文件不存在会报错 #r模式,能读不能写,文件不存在会报错 f = open('a1.txt')#不写'r',默认只读 result = f.rea ...
- eclipse在线安装ermaster插件
eclipse在线安装ermaster插件: https://www.jianshu.com/p/449fbcd9141a ERMaster的安装和使用 https://www.cnblogs.com ...
- ps -aux显示信息COMMAND不全
ps -aux结果: ps -auxwww结果:
- Python爬虫十六式 - 第三式:Requests的用法
Requests: 让 HTTP 服务人类 学习一时爽,一直学习一直爽 Hello,大家好,我是Connor,一个从无到有的技术小白.今天我们继续来说我们的 Python 爬虫,上一次我们说到了 ...
- hdu 1166 线段树 区间求和 +单点更新 CD模板
题目链接 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- 容器适配器————queue
只能访问 queue<T> 容器适配器的第一个和最后一个元素.只能在容器的末尾添加新元素,只能从头部移除元素. 操作 queue<int> q;//创建一个int型的空队列q ...
- Mac 安装 MongoDB 数据库
1. 使用 brew install mongodb 安装 (参见下图) 2. 安装成功如下图 (成功与否可参考 方框内字符) 3. 启动 MongoDB 数据库 3.1 先创建数据库存储目录 /da ...