1.安装nginx
1.1yum安装(快,版本低)
[root@localhost ~] yum install pcre pcre-devel openssl openssl-devel gcc -y
[root@localhost ~] yum install nginx -y
1.2更新官方源安装(快,版本高,配置目录不能自定义)
官方源baseurl=http://nginx.org/packages/Centos/7/$basearch/
将官方源写入/etc/yum.repos.d/目录下的文件配置自定义yum源
然后可以yum自动安装高版本的nginx
[root@localhost ~] echo "baseurl=http://nginx.org/packages/Centos/7/$basearch/" >> /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~] yum clean all
[root@localhost ~] yum install pcre pcre-devel openssl openssl-devel gcc -y
[root@localhost ~] yum install nginx -y
1.3源码安装(慢,自定义版本,自定义配置目录)
#下载https模块
[root@localhost ~] git clone https://github.com/arut/nginx-rtmp-module.git
#下载pcre静态网页重写,openssl加密和gcc编译工具
[root@localhost ~] yum install pcre pcre-devel openssl openssl-devel gcc -y
#下载源码包
[root@localhost ~] wget http://nginx.org/download/nginx-1.18.0.tar.gz
#解压并进入目录
[root@localhost ~] tar xf nginx-1.18.0.tar.gz
[root@localhost nginx-1.18.0] cd nginx-1.18.0
#参数设置
[root@localhost nginx-1.18.0] ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre --add-module=../nginx-rtmp-module
#编译安装
[root@localhost nginx-1.18.0] make && make install
#指定配置文件
[root@localhost nginx-1.18.0] /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#启动nginx
[root@localhost nginx-1.18.0] /usr/local/nginx/sbin/nginx
[root@localhost nginx-1.18.0] netstat -lntup | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27095/nginx: master
1.4nginx编译安装的各项参数
--prefix=PATH 路径
--user=USER 用户
--group=GROUP 组
--with-pcre 伪静态
--with-http_stub_status_module 状态显示
—-with-http_ssl_module 加密443
2.nginx配置
1.备份并清空注释
第二行是备份主配置文件
第三行是将备份文件中的注释和空行去掉并重定向定向到配置文件中
第四行是查看更改后的配置文件内容
[root@zhb nginx] cd /usr/local/nginx
[root@zhb nginx] cp /usr/local/nginx/conf/nginx.conf{,.bak} -p
[root@zhb nginx] egrep -v "^$|#" /usr/local/nginx/conf/nginx.conf.bak > /usr/local/nginx/conf/nginx.conf
[root@zhb nginx] cat /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2.配置文件为/usr/local/nginx/conf/nginx.conf
这是去掉注释后的全部内容
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server { #server模块
listen 80; #监听的网卡及端口
server_name www.example.com ; #服务名称(可设置多个)
location / { #目录配置
root html/zhb; #主目录
index index.html index.htm; #默认文档
}
}
error page 500 502 503 504 /50x.html; #指定错误代码的页面跳转
location = /50x.html {
root html;
}
}
3.nginx命令的基础参数
3.1 nginx的停止和平滑重启
nginx -s [stop|reload]
3.2 nginx查看版本和具体拥有的模块
nginx -[v|V]
3.3 nginx检查语法错误
nginx -t
4.nginx基本优化
优化1:虚拟主机server文件转移
nginx.conf处改为include xxx/*.conf
并在xxx/目录下存放server信息
可以降低nginx程序的耦合度,方便后期管理
[root@zhb nginx]# cat /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include conf/serverconf/*.conf #conf=/usr/local/nginx/conf
}
[root@zhb nginx]# cat /usr/local/nginx/conf/serverconf/web1.conf
server {
listen 80;
server_name www.example.com example.com ;
location / {
root html/zhb;
index index.html index.htm;
}
优化2:用户不输入www依旧可以访问网站
server {
listen 80;
server_name www.zhb.com zhb.com;
location / {
root html/zhb;
index index.html index.htm;
}
}
优化3:防止恶意域名解析到自己的ip
因为nginx会根据http请求头中的域名,ip,端口查找相对应的网站,
而如果http请求头中对应的域名在本地配置文件中不包含,
可能就表示有人恶意用域名解析我们的ip,
而当nginx找不到域名对应的server语句时,
nginx就会返回符合ip或端口条件的第一个server对应的网页。
所以我们将nginx.conf的第一个server语句改为一下结构
server{
listen 80;
server_name _default;
return 500;
}
这个server会监听80端口
当符合条件时,返回500服务器内部错误状态码
或者根据配置文件中的设定进行”404跳转“
优化4:报错日志
#debug, info, notice, warn, error, crit, alert, emerg
#这是报错日志的8个报错级别
#越右边级别越高,日志信息越少
-
-
#格式
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
优化5:访问日志
访问日志是基于ngx_http_log_module实现的
#访问信息格式,这是系统默认的,去掉注释就能用
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#可以在server或http模块中加入一下对访问日志的设置
#即可实现对访问日志的收集
access_log logs/access_www.log main gzip buffer=32k flush=5s;
优化6:日志切割并备份
#设置定时任务每天对日志进行剪切备份,并reload开始新的日志收集
#!/bin/sh
Dateformat=`date +%Y%m%d -d -1d`
Basedir="/usr/local/nginx"
Nginxlogdir="$Basedir/logs"
Logname="access_www"
[ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1
[ -f ${Logname}.log ] || exit 1
/bin/mv ${Logname}.log ${Logname}_${Dateformat}.log
#重启删除日志文件并重新收集
$Basedir/sbin/nginx -s reload
#将以上内容写入脚本中,并设置定时任务,每天凌晨定时运行脚本
00 00 * * * /bin/sh /application/script/jiaoben.sh
优化7:命令加入环境变量
将nginx命令加入环境变量,方便以后使用
echo "PATH=/usr/local/nginx/sbin/$PATH" >> /etc/profile
优化8:版本管理(代码管理)
nginx是nginx程序存放的实际目录
nginx-kaifa是开发人员设计与测试网站所用的目录
nginx-xianshang是nginx目录的一个软链接
当网页维护更新时,我们只需要先在测试环境中测试
然后上传代码,修改软链接指向,并reload平滑重启服务
即可完成网站的更新与维护
mkdir /application/nginx-xianshang
ln -s /usr/local/nginx /application/nginx-xianshang
优化9:一个显示网站访问数据的网页
通过http_stub_status_module模块搭建网站
实现对访问数据的查看
#status
server{
listen 80;
server_name status.zhb.com;
location / {
stub_status on;
access_log off;
}
}
设置完毕后访问status.zhb.com就可以看到网站的访问信息