Nginx入门学习
简介
nginx 是HTTP和反向代理服务器,邮件代理服务器和通用TCP/UDP代理服务器。总之一句话,nginx很火很牛逼就对了。
download
下载地址:nginx.org/en/download…;
mainline:最新版本
stable:稳定版本
下载命令:
wget [下载地址]tar -zxvf [压缩包]
目录介绍
auto:辅助configure文件的执行CHANGES:不同版本的特性
conf:示例文件
configure:用于生成中间文件,执行编译前的必须动作
contrib:vim nginx文件时显示的样式,用法 cp contrib/vim/* ~/.vim/
html::nginx的默认html文件
man:nginx的帮助文件
src:nginx源代码
安装
.configure --xxx
--prefix=PATH nginx安装目录的前缀--with-xxx 默认不会编译进nginx,需要则写到命令行
--without-xxx 默认编译进nginx,不需要则写到命令行
最普通的configure
编译命令为
.configure --prefix=/usr/local/nginx
执行完命令则生成objs目录,存放中间文件,objs/ngx_modules.c 文件决定哪些模块安装到nginx。
make编译:make
,执行完后生成大量的中间文件,都会存放到objs/src
目录中。
安装:make install
Nginx命令行
-c 指定配置文件-g 指定配置的指令
-p 指定运行目录
-s stop 立刻停止服务; quit 优雅的停止服务;reload 重载配置文件;reopen 重新开始记录日志文件
-t 测试配置文件语法是否有错误
-v 版本信息
重载配置文件
修改nginx配置文件的内容后,需要nginx重新加载配置文件
nginx -s reload
热部署
nginx正在运行的时候,此时需要升级nginx版本。只需要更新nginx二进制文件。
先备份旧的nginx:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
使用最新的nginx二进制文件 替换掉正在使用的nginx二进制文件。
cp -r nginx /usr/local/nginx/sbin/ -f
查看正在运行的nginx的master进程
ps -ef | grep nginx
告诉正在运行nginx的master,需要进行nginx升级
kill -USR2 [正在运行的nginx master进程ID]
执行完命令后会启动新的nginx进程,然后告知旧的nginx master进程,请优雅的关闭所有旧的worker进程
kill -WINCH [旧的nginx master进程ID]
然后会发现旧的nginx worker进程已经全部关闭,发现master进程还在。如果新的nginx版本发生的错误,可以回退到旧的nginx master进程中,执行nginx -s reload
会回退到旧版本
日志切割
# 先把日志文件先备份mv access.log access_bak.log
# 进行日志切割,执行完命令会重新生成access.log 文件
nginx -s reopen
一般情况下会后台做一个bash脚本,定时进行日志切割。
静态资源服务器
nginx 配置
# 日志格式,main为日志格式命名log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
gzip on; # 对文件进行压缩传送
gzip_min_length 1; # 小于 1 字节则不进行压缩。
gzip_comp_level 2; # 压缩级别
gzip_types image/jpeg image/gif; # 对这些文件才进行压缩
server {
listen 80; # 监听端口
server_name localhost; # 域名
# 记录access_log日志(每一个请求都会记录), 使用main的log_format进行记录
access_log /logs/blog.log main;
# url匹配的路径
location / {
alias code/; # 指 nginx的安装目录下 eg:/usr/local/nginx/code
# autoindex on; # 共享静态资源
# set $limit_rate 10k; # nginx每秒传输 10k字节 到浏览器当中
}
}
具备缓存功能的反向代理服务
可以建立多个上游服务,当有请求进来的时候,nginx可以根据负载均衡算法代理给多台上游服务器工作。nginx配置
# 上游服务# local 为上游服务器名
upstream local {
# 其中一台上游服务器,可以配置多台
# 127.0.0.1:8080 代表只有本机能访问8080端口
server 127.0.0.1:8080;
}
# 反向代理缓存 缓存路径 内存关键字,10m
proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g;
inactive=60m use_temp_path=off;
server {
listen 80;
server_name colablog.cn; # 域名
# 记录access_log日志(每一个请求都会记录), 使用main的log_format进行记录
access_log /logs/blog.log main;
# url匹配的路径
location / {
# doc http://nginx.org/en/docs/http/ngx_http_proxy_module.html
# proxy_set_header 反向代理服务器把客户端请求的信息,设置到请求头中发送到上游服务
proxy_set_header Host $host; # 域名
proxy_set_header X-Real-IP $remote_addr; # 客户端地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 使用哪个缓存,对应上面的keys_zone
proxy_cache my_cache;
# 缓存的路径
proxy_cache_key $hots$uri$is_args$args;
# 对于这些响应不缓存
proxy_cache_valid 200 304 302 1d;
# 代理到上游服务
proxy_pass http://local;
}
}
GoAccess可视化实时监控access日志
安装
你可以快速使用 apt install
或者 yum install
,也可以在官网中查看编译安装的方式。
运行goaccess命令
# goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report.html --real-time-html --time=format='%H:%M:%S' --date-format='%d/%b/%Y' --log-format=COMBINED
--real-time-html 代表实时更新页面
nginx.conf配置文件
# 日志格式log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80;
server_name: localhost;
# 日志记录
access_log logs/access.log main;
# 指定页面
location /report.html {
alias /usr/local/nginx/html/report.html;
}
}
然后访问 http://localhost/report.html
,就可以看到下面这么高大上的界面了。
SSL
如果你有域名的话,只需要两行命令可以快速把你的 http://域名 变成 https://域名。
ubuntu版本下
apt install python-certbot-nginx
centos版本下
yum install python2-certbot-nginx
使用certbot
命令帮我们下载证书和自动配置好nginx.conf,
certbot --nginx --nginx-server-root=/usr/local/nginx/conf/ -d [你的域名]
执行了上面的命令后会有两个选项,第一个选项是可以访问http或者https,不会进行重定向;而第二个选项则是访问http的时候重定向到https中。
就这样就搞定了,是不是很简单。
总结
Nginx初次入门的小白,文章若有错误的地方,请用力的指出。
参考文章:极客时间:Nginx核心知识100讲
以上是 Nginx入门学习 的全部内容, 来源链接: utcz.com/a/25371.html