Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。
Nginx官方网站:http://nginx.org/
Nginx下载地址:http://nginx.org/en/download.html
官网大致提供了3种类型的版本,这里我使用的是nginx-1.16.0版本。
Mainline: 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version: 最新稳定版,生产环境上建议使用的版本
versions: 遗留的老版本的稳定版
这里主要有两种方式,一种就是直接在CentOS中wget,这个需要系统安装相关的依赖;另一种就是提前下载好然后上传到服务器。我这里只说一下wget方式吧。
命令: wget http://nginx.org/download/nginx-1.16.0.tar.gz
注意: 这里有可能会报: command not found
解决方法:
1、rpm 安装
下载wget的RPM包:
http://mirrors.163.com/centos/6.8/os/x86_64/Packages/wget-1.12-8.el6.x86_64.rpm
执行
rpm -ivh wget-1.12-8.el6.x86_64.rpm
2、yum安装
yum -y install wget
查看一下下载的包:
然后在执行命令就不会报错了,到这里下载就完成了。
先安装nginx依赖的包: 在Linux系统的终端下运行如下命令,或者用Xshell连接自己的Linux系统,在Xshell中运行如下命令:
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
命令: tar -zvxf nginx-1.16.0.tar.gz
用默认值安装,一般这就足够了。
命令: ./configure && make && make install
查看安装位置: whereis nginx
然后我们 cd 到安装位置,大致如下:
默认情况下:
ps:安装过程可以自定义,具体过程如下:
cd /usr/local/src
wget http://nginx.org/download/nginx-1.4.2.tar.gz
tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2
./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=/opt/app/openet/oetal1/chenhe/pcre-8.37 \
--with-zlib=/opt/app/openet/oetal1/chenhe/zlib-1.2.8 \
--with-openssl=/opt/app/openet/oetal1/chenhe/openssl-1.0.1t
make
make install
./configure 后面可以跟一些参数,用法已经在例子中了,具体意义在官方文档中介绍的很详细,地址:http://nginx.org/en/docs/configure.html。
其实就只有三条命令:
首先要进入nginx的sbin文件夹:cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s reload
由于每次启动都要进到nginx的sbin文件夹,比较麻烦,所以一般都会将nginx加入到环境变量中。
以修改/etc/profile 为例:
执行命令:vi /etc/profile
在打开文件的末尾添加(PATH:[nginx 的 sbin目录]):
PATH="$PATH:/usr/local/nginx/sbin"
export PATH
保存退出,刷新配置: source /etc/profile
测试: nginx
此时无论在什么位置,只要直接输入nginx的命令就可以了(不需要前面的./
了)。
nginx
nginx -s stop
nginx -s reload
访问测试:在浏览器输入服务器ip 如:http://192.168.216.104/ 报错!
这是由于centos的防火墙80端口没有对外开放,防火墙设置如下:
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp
删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic