资料 Nginx 极简教程 视频教程
简介
什么是 Nginx?
Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
什么是反向代理?
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
安装
详细安装方法请参考:Nginx 运维
Linux 安装
rpm 包方式(推荐)
(1)进入下载页面,选择合适版本下载。
$ wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
(2)安装 nginx rpm 包
nginx rpm 包实际上安装的是 nginx 的 yum 源。
$ rpm -ivh nginx-*.rpm
(3)正式安装 rpm 包
$ yum install nginx
nginx -v //可以看到具体的版本信息
(4)关闭防火墙
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --reload
(5)启动
$ nginx
yum安装
如何卸载?
nginx 默认目录
whereis nginx
即可看到类似于如下的内容:nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx
以下是Nginx的默认路径:
(1) Nginx配置路径:/etc/nginx/
(2) PID目录:/var/run/nginx.pid
(3) 错误日志:/var/log/nginx/error.log
(4) 访问日志:/var/log/nginx/access.log
(5) 默认站点目录:/usr/share/nginx/html
默认配置文件路径
/etc/nginx/nginx.conf
这个文件里可能会有引用,比如
include /etc/nginx/conf.d/*.conf;
那么实际上你的项目配置文件就是在/etc/nginx/conf.d/这个文件夹下的所有.conf文件;
一般一个项目(域名)配一个文件,比如你的域名是www.baidu.com,那么你的配置文件就可以叫
/etc/nginx/conf.d/www.baidu.com.conf
开机启动
Centos7 以上是用 Systemd 进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。Systemd 服务文件以 .service 结尾。
rpm 包方式
如果是通过 rpm 包安装的,会自动创建 nginx.service 文件。
直接用命令:
$ systemctl enable nginx.service
$ systemctl enable nginx //(上面的不可以使用下面的)
拓展:利用 yum 命令和 rpm 命令升级Nginx或者安装最新版Nginx
- 下载 Nginx 官网的指定 rpm 包,使用 rpm 命令升级
Nginx官方的 rpm包地址:http://nginx.org/packages/rhel/7/x86_64/RPMS/
#先下载nginx的rpm包
[root@test soft]# wget http://nginx.org/packages/rhel/7/x86_64/RPMS/nginx-1.12.0-1.el7.ngx.x86_64.rpm
# 再执行 rpm -Uvh nginx-1.12***
[root@test soft]# rpm -Uvh nginx-1.12.0-1.el7.ngx.x86_64.rpm
warning: nginx-1.12.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:nginx-1:1.12.0-1.el7.ngx ################################# [ 50%]
Cleaning up / removing...
2:nginx-1:1.6.3-8.el7 ################################# [100%]# 升级后
[root@test soft]# rpm -qa|grep nginxnginx-1.12.0-1.el7.ngx.x86_64
防火墙设置
当添加配置后,比如8081端口,在服务器本地curl 127.0.0.1:8001是可以运行的,但是在windows下浏览器中运行服务器公网ip:8001时不可以访问的,如果系统开启了防火墙这时需要添加防火墙对外开放端口。(下方有未开启防火墙的配置)
设置防火墙对外开放端口
firewall-cmd --list-all 查看开放的端口号
sudo firewall-cmd --add-port=8000/tcp --permanent 开放8000端口
firewall-cmd --reload 重启防火墙
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙
systemctl status firewalld # 查看防火墙开启状态,显示running则是正在运行
firewall-cmd --reload # 重启防火墙,永久打开端口需要reload一下
# 添加开启端口,--permanent表示永久打开,不加是临时打开重启之后失效
firewall-cmd --permanent --zone=public --add-port=8888/tcp
# 查看防火墙,添加的端口也可以看到
firewall-cmd --list-all
解决FirewallD is not running问题
1.查看firewalld状态,如果是dead状态,即防火墙未开启。
systemctl status firewalld
2.开启防火墙
systemctl start firewalld
3.确认firewalld状态
systemctl status firewalld
4.开放默认端口号 3306,出现success表示成功
firewall-cmd --permanent --zone=public --add-port=3306/tcp
关闭防火墙
systemctl stop firewalld
入门
常用的命令
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 的版本,编译器版本和配置参数。
nginx -t nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用的文件
相关文件夹
查看 nginx 被安装到了什么地方,有哪些相关目录,其中位于 /etc 目录下的主要是配置文件
rpm -ql nginx
主要关注的文件夹有两个:
- /etc/nginx/conf.d/ 文件夹,是我们进行子配置的配置项存放处,/etc/nginx/nginx.conf 主配置文件会默认把这个文件夹中所有子配置项都引入;
- /usr/share/nginx/html/ 文件夹,通常静态文件都放在这个文件夹,也可以根据你自己的习惯放其他地方;
配置文件
nginx的配置放在nginx.conf文件中,一般我们可以使用以下命令查看服务器中存在的nginx.conf文件。
locate nginx.conf
/usr/local/etc/nginx/nginx.conf
/usr/local/etc/nginx/nginx.conf.default
如果服务器中存在多个nginx.conf文件,我们并不知道实际上调用的是哪个配置文件,因此我们必须找到实际调用的配置文件才能进行修改。
关于配置文件的路径不同
应该是安装方式不同导致的,使用 wget 安装的配置文件在 /usr/local/nginx/conf,使用 yum 安装的配置文件在 /etc/nginx下。
nginx.conf 结构图可以这样概括:
main # 全局配置,对全局生效
├── events # 配置影响 Nginx 服务器或与用户的网络连接
├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
│ ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分
│ ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
│ ├── server
│ │ ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
一个 Nginx 配置文件的结构就像 nginx.conf 显示的那样,配置文件的语法规则:
- 配置文件由指令与指令块构成;
- 每条指令以 ; 分号结尾,指令与参数间以空格符号分隔;
- 指令块以 {} 大括号将多条指令组织在一起;
- include 语句允许组合多个配置文件以提升可维护性;
- 使用 # 符号添加注释,提高可读性;
- 使用 $ 符号使用变量;
- 部分指令的参数支持正则表达式;
典例配置
user nginx; # 运行用户,默认即是nginx,可以不进行设置
worker_processes 1; # Nginx 进程数,一般设置为和 CPU 核数一样
error_log /var/log/nginx/error.log warn; # Nginx 的错误日志存放目录
pid /var/run/nginx.pid; # Nginx 服务启动时的 pid 存放位置
events {
use epoll; # 使用epoll的I/O模型(如果你不知道Nginx该使用哪种轮询方法,会自动选择一个最适合你操作系统的)
worker_connections 1024; # 每个进程允许最大并发数
}
http { # 配置使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置
# 设置日志模式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; # Nginx访问日志存放位置
sendfile on; # 开启高效传输模式
tcp_nopush on; # 减少网络报文段的数量
tcp_nodelay on;
keepalive_timeout 65; # 保持连接的时间,也叫超时时间,单位秒
types_hash_max_size 2048;
include /etc/nginx/mime.types; # 文件扩展名与类型映射表
default_type application/octet-stream; # 默认文件类型
include /etc/nginx/conf.d/*.conf; # 加载子配置项
server {
listen 80; # 配置监听的端口
server_name localhost; # 配置的域名
location / {
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 默认首页文件
deny 172.168.22.11; # 禁止访问的ip地址,可以为all
allow 172.168.33.44; # 允许访问的ip地址,可以为all
}
error_page 500 502 503 504 /50x.html; # 默认50x对应的访问页面
error_page 400 404 error.html; # 同上
}
}
资料
请问nginx的配置文件nginx.conf在哪里?
https://segmentfault.com/q/1010000021970819
编译方式安装
https://cloud.tencent.com/developer/article/1654844
注意需要关闭防火墙