Nginx(engine x)是一个具有高性能的【HTTP】和【反向代理】的【Web服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】。
HTTP:是超文本传输协议的缩写,是用于从Web服务器传输超文本到本地浏览器的传输协议,也是互联网上应用最为广泛的一种网络协议。HTTP是一个客户端和服务端请求和应答的标准,客户端是终端用户,服务端是网站,通过使用Web浏览器、网络爬虫或其他工具,客户端发起一个到服务端上指定端口的HTTP请求。
正向代理:替真正的client向server申请服务的是正向代理;正向代理是client的行为,目的是为了伪造出client身份,常用在代理ip的使用。
反向代理:替真正的server给client提供服务的是反向代理;反向代理是server方的行为,目标是伪造出server身份,反向代理常用于前台nginx转发后台主服务器的架构。
Web服务器:也叫做网页服务器,主要功能是为用户提供网上信息浏览服务。
POP3/SMTP/IMAP代理服务器:POP3(Post Offic Protocol 3)邮局协议的第三个版本;SMTP(Simple Mail Transfer Protocol)简单邮件传输协议;IMAP(Internet Mail Access Protocol)交互式邮件存取协议。Nginx也可以作为电子邮件代理服务器。
通过Nginx官网获取相应的版本下载。



vim /etc/selinux/config来进行设置,修改SELINUX=disabled,然后重启下系统即可生效。
源码安装方式需要提前执行yum install -y gcc pcre pcre-devel zlib zlib-devdl openssl openssl-devel这条命令,yum安装不需要执行。
方案一:Nginx的源码简单安装

方案二:Nginx的源码复杂安装
这种安装方式和简单安装的区别在于通过./configure来对编译参数进行设置
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--modules-path=/usr/local/nginx/modules \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--lock-path=/usr/local/nginx/logs/nginx.lock
| 命令 | 解释 |
|---|---|
| --prefix=PATH | 指向Nginx的安装目录,默认值为/usr/local/nginx |
| --sbin-path=PATH | 指向(执行)程序文件(nginx)的路径,默认值为prefix+/sbin/nginx |
| --modules-path=PATH | 指向Nginx动态模块安装目录,默认值为prefix+/modules |
| --conf-path=PATH | 指向配置文件(nginx.conf)的路径,默认值为prefix+/conf/nginx.conf |
| --error-log-path=PATH | 指向错误日志文件的路径,默认值为prefix+/logs/error.log |
| --http-log-path=PATH | 指向访问日志文件的路径,默认值为prefix+/logs/access.log |
| --pid-path=PATH | 指向Nginx启动后进程ID的文件路径,默认值prefix+/logs/nginx.pid |
| --lock-path=PATH | 指向Nginx锁文件的存放路径,默认值为prefix+/logs/nginx.lock |
方案三:yum安装

[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 -s stoprm -rf /usr/local/nginxchkconfig nginx off和rm -rf /etc/init.d/nginxyum remove nginx
| 目录/文件 | 解释 |
|---|---|
| auto | 存放的是编译相关的脚本 |
| CHANGES | 版本变更记录 |
| CHANGES.ru | 俄罗斯文的版本变更记录 |
| conf | Nginx默认的配置文件 |
| configure | Nginx软件的自动脚本程序,作用为:检测环境及根据环境检测结果生成C代码;生成编译代码需要的 Makefile文件 |
| contrib | 存放的是几个特殊的脚本文件,其中README中对脚本有着详细的说明 |
| html | 存放的是Nginx自带的两个html页面,访问Nginx的首页和错误页面 |
| LICENSE | 许可证的相关描述文件 |
| man | Nginx的man手册 |
| README | Nginx的阅读指南 |
| src | Nginx的源代码 |
Nginx的目录结构如下

| 主要目录/文件 | 解释 |
|---|---|
| conf | Nginx所有配置文件目录 |
| mine.types | 记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关系 |
| nginx.conf | Nginx的核心配置文件 |
| html | 存放Nginx自带的两个html页面 |
| 50x.html | 访问失败后的失败页面 |
| index.html | 访问成功后的默认首页 |
| logs | 日志文件存放地,当Nginx启动后,这里会有acess.log、error.log和nginx.pid文件 |
| sbin | 存放执行程序文件nginx |
| nginx | 用来控制Nginx的启动和停止等相关的命令 |
在学习Nginx启停命令之前先简单了解一下Nginx是如何工作的。

通过上面的Nginx的进程模型可以看出,我们作为管理员,只需要通过给master进程发送信号就可以来控制Nginx,这个时候我们需要有两个前提条件,一个是要操作的master进程,一个是信号。
ps -ef|grep nginx命令获取;--pid-path=PATH默认是/usr/local/nginx/logs/nginx.pid,可以通过查看该文件来获取Nginx的master进程ID。kill -single PID
| 信号 | 作用 |
|---|---|
| TERM/INT | 立即关闭整个服务 |
| QUIT | master进程会控制所有的worker进程不再接收新的请求,等所有请求处理完后,再把进程都关闭掉 |
| HUP | master进程会控制旧的worker不再接收新的请求,等处理完请求后将旧的worker进程关闭掉,然后根据Nginx的配置文件重新启动新的worker进程 |
| USR1 | 重新打开日志文件,可以用来进行日志切割 |
| USR2 | 告诉master要平滑升级,这时会重新开启对应的master进程和worker进程,整个系统中将会有两个master进程,并且新的master进程的PID会被记录在/usr/local/nginx/logs/nginx.pid,而之前旧的master进程PID会被记录在/usr/local/nginx/logs/nginx.pid.oldbin文件中,接着再次发送QUIT给旧的master进程,让其处理完请求后进行关闭 |
| WINCH | 所有worker不再接收处理新连接,相当于给worker进程发送QUIT指令,注意master进程不会被关闭 |
此方式是通过Nginx安装目录下的sbin下的可执行文件nginx来进行Nginx状态的控制,可以通过 ./nginx -h查看帮助。

把Nginx应用服务配置设置成系统服务,方便对Nginx服务的启动和停止等相关操作,具体实现步骤为:
[Unit]
Description=nginx web service
Documentation=http://nginx.org/en/docs/
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=default.target
chmod 755 /usr/lib/systemd/system/nginx.servicesystemctl start nginxsystemctl stop nginxsystemctl restart nginxsystemctl reload nginxsystemctl status nginxsystemctl enable nginx在之前执行Nginx的相关命令时都需要进入到sbin目录下去执行,很是麻烦,在此处可以通过将Nginx命令配置到系统环境中的方式来使得执行Nginx命令可以在任何目录下进行。
export PATH=$PATH:/usr/local/nginx/sbinsource /etc/profile如果想对Nginx的版本进行更新或者应用新的模块,最简单的做法就是停止当前Nginx服务,然后开启新的Nginx服务,但是这样会导致在一段时间内用户无法访问服务器。为了解决这个问题就需要借助Nginx提供的平滑升级功能,这里有两种方案可以完成不中断Nginx服务的情况下进行升级。
/usr/local/nginx/sbin目录下/usr/local/nginx/sbin目录下make upgrade我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(
前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型
我有带有gemwebsocket-rails0.7的Rails3.2应用程序。在开发机上,一切正常在生产环境中,我使用Nginx/1.6作为代理服务器,Unicorn作为http服务器。Thin用于独立模式(在https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode之后)。nginx配置:location/websocket{proxy_passhttp://localhost:3001/websocket;proxy_http_version1.1;proxy_set_headerUp
Nginx在生产中的重要性通常基于它为慢速客户端提供服务的能力;在RESTfulAPI的设置中,它似乎是生产堆栈的一个不必要的层,尤其是Puma(不像广泛使用的unicorn可以处理nginx工作)。Pumacanallowmultipleslowclientstoconnectwithoutrequiringaworkertobeblockedontherequesttransaction.Becauseofthis,Pumahandlesslowclientsgracefully.HerokurecommendsPumaforuseinscenarioswhereyouexpect
我目前正在运行Foreman在暂存(Ubuntu)上,一旦我开始工作,就会切换到使用upstart。我的Procfile.staging看起来像这样:nginx:sudoservicenginxstartunicorn:bundleexecunicorn-c./config/unicorn.rbredis:bundleexecredis-serversidekiq:bundleexecsidekiq-v-C./config/sidekiq.yml我可以使用以下方法成功启动nginx:$sudoservicenginxstart然而,当我运行$foremanstart时,当其他三个进程成
Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存
Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法,Linux…感兴趣就关注我吧!你定不会失望。目录1.ls显示当前目录下的文件内内容2.pwd-显示用户当前所在的目录3.cd-改变工作目录。将当前工作目录改变到指定的目录下1.cd-回到上一次待的工作空间2.cd..返回上一层目录1.相对路径:cd../aurora2.绝对路径:cd/home/aurora/lesson1/aurora3.cd~进入用户家目录4.cd/进入root目录4.mkdir-新建目录5.rmdir/rm-删除1.rmdir删除空文件夹2.rm删除1.rm-f2.rm-i3.rm-r1.ls显示当前目
我正在ubuntu14.04和ruby2.2.4上安装passenger+nginx。passenger-install-nginx-module有bundler错误$passenger-install-nginx-module/home/ubuntu/.rvm/gems/ruby-2.2.4/gems/bundler-1.13.1/lib/bundler/rubygems_ext.rb:45:in`full_gem_path':uninitializedconstantBundler::Plugin::API::Source(NameError)from/home/ubuntu/.r
一、前言最近,在测试环境的nginx里增加了一个https配置:location/api-meeting-qq/{proxy_passhttps://api.meeting.qq.com/;}然后,执行命令://这个是nginx启动文件的路径,根据实际情况自行更改sudo/home/useradmin/nginx/sbin/nginx-sreload结果,nginx就报错了:nginx:[emerg]httpsprotocolrequiresSSLsupportin/home/useradmin/nginx/conf.d/trainNginx.conf:9二、解决方法百度发现,是之前安装ngi