Nginx基本知识
Posted 天堂1223
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx基本知识相关的知识,希望对你有一定的参考价值。
1.0 介绍
为了开始使用nginx开放源代码或Nginx Plus,你必须首先在系统中安装它并且学习一些基础知识。在该章节中,你将会学习如何安装Nginx,主配置文件在哪里,并且管理员使用的相关命令。你也将会学习如何去验证你的安装并向默认服务器如何发送请求。
1.1 在Debian/Ubuntu中安装
问题
你需要在一个Debian或Ubuntu机器上安装Nginx源码。
解决办法
创建一个包含下列内容名称为*/etc/apt/sources.list.d/nginx.list*:
deb http://nginx.org/packages/mainline/OS/ CODENAME nginx
deb-src http://nginx.org/packages/mainline/OS/ CODENAME nginx
修改这个文件,依赖你的发行版,使用ubuntu或debian来代替上述URL地址后面的OS。使用你发行版的代码名称替换CODENAME
;jessie
或stretch
用户Debian,或trusty, xenial, artful或bionix用于ubuntu。然后,运行下面的命令:
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
apt-get update
apt-get install -y nginx
/etc/init.d/nginx start
讨论
你刚刚创建的文件指导了apt的包管理系统来使用官方的Nginx包仓库。使用的命令是下载Nginx GPG的签名包,并且引入到apt
中。提供给apt的签名密钥能够使apt系统验证来自仓库的包。apt-get update
命令指导apt系统从他知道的仓库中刷新包列表。当包列表被刷新之后,你可以从Nginx官网仓库中安装Nginx源码。当你安装之后,最后的命令用于启动Nginx。
1.2 在RedHat/CentOS中安装
问题
你需要在RedHat或CentOS中安装Nginx源码。
解决办法
创建包含下列内容名称为/etc/yum.repos.d/nginx.repo
:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
修改这个文件,依赖于你的发行版使用rhel或centos替换URL地址最后的OS。对于版本6.x或7.x各自版本使用6或7替换OSRELEASE。然后,运行下面的命令:
yum -y install nginx
systemctl enable nginx
systemctl start nginx
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload
讨论
你刚刚创建的文件是用于指导yum包管理系统去使用Nginx官方源码仓库。后面使用的命令用于从官方仓库中安装Nginx源码,指导系统在启动的时候使能Nginx,并且告诉他现在启动Nginx。firewall命令打开TCP协议的80端口,这是Http默认的端口。最后的命令重新加载防火墙来提交更改。
1.3 关键文件,命令和目录
问题
你需要理解Nginx比较重要的目录和命令。
解决方案
Nginx文件和目录
- /etc/nginx。
/etc/nginx
目录是Nginx服务器默认的配置根目录。在该文件夹中,你可以找到指导Nginx如何运行的一些配置文件。 - /etc/nginx/nginx.conf。
/etc/nginx/nginx.conf
文件是被Nginx服务使用的默认的配置入口点。这个配置文件设置全局设置,例如工作进程,调谐,日志,加载动态模块和引入其他Nginx配置文件。在一个默认的配置中,/etc/nginx/nginx.conf
文件包含顶层Http块,他包含目录中的所有的配置文件。 - /etc/nginx/conf.d。
/etc/nginx/conf.d
目录包含木人的HTTP服务器配置文件。在该目录中以.conf结尾的文件被包含在来自于/etc/nginx/nginx.conf
文件中的顶层http块中。最好的实践就是使用include
语句以这样的方式组织你的配置来保持你的配置文件更加简洁。在一些包仓库中,这个文件夹被命名为sites-enabled
,配置文件从一个名称为site-avalible
的文件夹中链接上来;这种惯例是不被推荐使用的。 - /var/log/nginx。
/var/log/nginx
目录是Nginx默认的log位置。在这个文件夹中,你可以看到一个access.log
文件和一个error.log
文件。access日志文件包含访问Nginx服务器的每一个请求。error日志文件包含错误时间,如果调试模块被使能的话,调试信息也是被包含的。
Nginx命令
- nginx -h:显示Nginx帮助菜单。
- nginx -v:显示Nginx版本。
- nginx -V:显示Nginx版本,构建信息和配置参数,并显示构建进入Nginx二进制中的模块。
- nginx -t:测试Nginx配置。
- nginx -T:测试Nginx配置,并且打印有效的配置到屏幕中。当查找相关支持的时候,该命令是有用的。
- nginx -s signal:
-s
标志发送一个信号到Nginx主进程中。你可以发送信号例如stop,quit,reload和reopen。stop信号立即停止继续Nginx进程。当他完成处理器上的请求之后,quit信号停止Nginx进程。reload信号重新加载配置。reopen信号指导Nginx重新打开log文件。
讨论
随着对这些关键文件,目录和命令的理解,你将会有一个更好的位置来开始Nginx的工作。随带着这个知识,你可以更改默认的配置文件,并且通过使用nginx -t
命令来测试你的改变。如果你的测试是成功的,你也要知道如何指导Nginx来重新加载他的配置,也就是使用nginx -s reload
命令。
1.4 服务静态内容
问题
你需要使用Nginx服务于静态内容。
解决方案
遵循下面的Nginx配置例子,重写位于/etc/nginx/conf.d/default.conf
的默认的HTTP服务器配置。
server
listen 80 default_server;
server_name www.example.com;
location /
root /usr/share/nginx/html;
# alias /usr/share/nginx/html;
index index.html index.htm;
讨论
这个配置通过HTTP在80端口上服务于来自目录/usr/share/nginx/html/
的静态文件。在这个配置中,第一行定义了一个新的服务器块。它定义了Nginx需要监听的新的上下文。第二行指导Nginx监听80端口,并且default_server
参数指导Nginx使用这个服务器作为80端口默认的上下文。server_name
直接定义主机名称或哪些请求应该被重定向到这个服务器的名称。如果配置没有定义这个上下文作为默认服务器,Nginx需要重定向请求到这个服务器中,仅仅在HTTP主机头符合直接提供给server_name
的值的时候。
location
块基于在URL中的路径,定义一个配置。路径或域名后面URL的一部分,被称为URI。Nginx将会最佳匹配被请求到一个location
块的URI。举个例子,使用/
来匹配所有的请求。当对于给定的上下文服务内容的时候,root
直接展示给Nginx去哪里寻找静态文件。当寻找请求的文件的时候,请求的URI被追加到root
对应的值中。如果我们已经想location
变量提供了一个URI前缀,这个应该被包含在追加的路径中,除非我们使用的是alias
目录而不是root
。最后,index
变量提供给Nginx一个默认的文件,或者是要检查的文件列表,在该事件中,没有其他的路径在URI中被提供了。
1.5 优美的重载
问题
你需要在不丢弃包的情况下,重新加载你的配置。
解决办法
使用Nginx的reload
方法,可以在不停止服务器的情况,实现一个优美的配置的重新加载。
nginx -s reload
这个例子使用Nginx二进制来向主进程发送一个信号,重新记载nginx系统。
讨论
在不停止服务器的情况下,重新加载Nginx配置,提供了在不丢包的情况下修改配置的能力。在高正常运行时间,动态环境,你将需要在一些地方修改你的负载均衡配置。当保持在线负载均衡的情况下,Nginx允许你做这样的工作。这个特征提供了无数的可能性,例如在一个活跃的环境中,重新运行配置管理,或构建应用程序或集群感知模块到动态配置中,并且可以重新加载Nginx来满足环境的需要。
以上是关于Nginx基本知识的主要内容,如果未能解决你的问题,请参考以下文章
yarn publish 失败,因为 dist 文件夹被添加到 gitignore