Web基础入门
Web基础入门
Nginx概述
nginx是一个开源且高性能、可靠的http web服务、代理服务。
开源 :直接获取源代码
高性能 :支持海量并发
可靠 :服务稳定
Nginx应用场景
nginx快速安装
# rpm安装(yum安装)
- epel仓库
- 官方仓库
# 源码安装
使用官方源
Nginx官方网站 nginx 官网
1.添加nginx官方源
[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[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
2.安装nginx
[root@web01 ~]# yum -y install nginx
3.启动nginx
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx
4.查看nginx版本号
[root@web01 ~]# nginx -v
nginx version: nginx/1.22.0
5.查看nginx的版本和源码安装生成步骤的参数有哪些
[root@web01 ~]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
nginx的启停
1.启动
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# nginx
[root@web01 ~]#/usr/sbin/nginx
2.停止
[root@web01 ~]# systemctl stop nginx
[root@web01 ~]# nginx -s stop
[root@web01 ~]#/usr/sbin/nginx -s stop
3.重新加载
[root@web01 ~]#systemctl reload nginx
[root@web01 ~]#nginx -s reload
[root@web01 ~]#/usr/sbin/nginx -s reload
nginx启动脚本sysctemd管理
[root@web01 ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"
[Install]
WantedBy=multi-user.target
源码安装,使用fpm打包,脚本内容
[root@web01 ~]# vim post_install_nginx.sh
ln -s /application/nginx-1.20.2 /opt/nginx
echo 'PATH="/usr/local/nginx/sbin:$PATH"' > /etc/profile.d/nginx.sh
cat >> /usr/lib/systemd/system/nginx.service <<EOF
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/application/nginx/nginx.pid
ExecStart=/application/nginx/sbin/nginx -c /application/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /application/nginx/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /application/nginx/nginx.pid)"
[Install]
WantedBy=multi-user.target
EOF
nginx配置文件
1.nginx主配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/nginx.conf | 配置文件 | nginx主配置文件 |
/etc/nginx/conf.d/default.conf | 配置文件 | nginx网站示例配置文件 |
2.Nginx代理相关参数文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/fastcgi_params | 配置文件 | Fastcgi代理配置文件 |
/etc/nginx/scgi_params | 配置文件 | scgi代理配置文件 |
/etc/nginx/uwsgi_params | 配置文件 | uwsgi代理配置文件 |
3.Nginx编码相关配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/win-utf | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/koi-utf | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/koi-win | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/mime.types | 配置文件 | Content-Type与扩展名 |
4.Nginx管理相关命令
路径 | 类型 | 作用 |
---|---|---|
/usr/sbin/nginx | 命令 | Nginx命令行管理终端命令 |
/usr/sbin/nginx-debug | 命令 | Nginx命令行与终端调试工具 |
5.Nginx日志相关目录与文件
路径 | 类型 | 作用 |
---|---|---|
/var/log/nginx | 目录 | Mginx默认存放日志目录 |
/etc/logrotate.d/nginx | 配置文件 | Nginx默认的日志切割 |
Nginx配置文件详解
nginx主配置文件
[root@web01 ~]# vim /etc/nginx/nginx.conf
# 注意:nginx配置文件每一行都以';'结尾
# 核心层(核心模块)、全局配置
# nginx启动用户配置
user nginx;
# nginx工作线程数量(cpu亲和)
worker_processes auto;
# 错误日志 日志路径 日志级别
error_log /var/log/nginx/error.log notice;
# 程序启动进程号(pid号)存放路径
pid /var/run/nginx.pid;
# 事件层(事件模块)
events {
# 一个worker进程最大连接数
worker_connections 1024;
}
# http层,http模块,网站配置
http {
# 浏览器中,默认可以解析的格式(不需要下载的格式)
include /etc/nginx/mime.types;
# 浏览器中,以下格式,点击后直接下载不解析(安装软件的格式)
default_type application/octet-stream;
# 日志格式 格式名字 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 访问日志 日志路径 调用日志格式名字
access_log /var/log/nginx/access.log main;
# 文件传输的优化配置
sendfile on;
#tcp_nopush on;
# 长连接超时时间(65s)
keepalive_timeout 65;
# 传输过程中使用gzip压缩
#gzip on;
# 包含 nginx其他子配置文件(网站虚拟主机配置文件server)
include /etc/nginx/conf.d/*.conf;
}
日志格式
$remote_addr :远端的IP (上一个节点的IP)
- $remote_user :等路的用户
[$time_local] :时间
"$request" : 请求方式、请求uri、HTTp协议版本号
$status : 状态码
$body_bytes_sent :流量
"$http_referer" :跳转地址
"$http_user_agent" :客户端信息
"$http_x_forwarded_for" :记录透传IP地址 (获取用户的真实IP)
虚拟主机配置文件
server {
# 该网站的监听端口
listen 80;
# 该网站的IP或域名
server_name localhost;
# 该网站的日志路径及日志格式
#access_log /var/log/nginx/host.access.log main;
# uri跳转
location / {
# 站点目录
root /usr/share/nginx/html;
# 默认首页,索引页面
index index.html index.htm;
}
}
# server层是网站配置层,包含在http层中
http{
server{
location /{
location /xxx{}
}
location /api{}
location /zls{}
}
server{
}
...
}
多虚拟主机(多web网站配置)
在企业中,是不肯用一个nginx对应一套业务,多个网站都在一个nginx中配置
基于IP的多虚拟主机
# 添加虚拟网卡
[root@web01 ~]# ifconfig eth0:0 10.0.0.10
[root@web01 ~]# vim /etc/nginx/conf.d/zh.conf
server{
listen 80;
server_name 10.0.0.10;
location /{
root /game/h5_games;
index index.html;
}
}
[root@web01 ~]# vim /etc/nginx/conf.d/zh.conf
server{
listen 80;
server_name 10.0.0.7;
location /{
root /game/zh2;
index index.html;
}
}
基于多端口的虚拟机
[root@web01 ~]# vim /etc/nginx/conf.d/zh.conf
server{
listen 8080;
server_name 10.0.0.7;
location /{
root /game/h5_games;
index index.html;
}
}
[root@web01 ~]# vim /etc/nginx/conf.d/zh2.conf
server{
listen 8081;
server_name 10.0.0.7;
location /{
root /game/zh2;
index index.html;
}
}
基于多域名的虚拟机
[root@web01 ~]# vim /etc/nginx/conf.d/zh.conf
server{
listen 80;
server_name www.zh.com;
location /{
root /game/h5_games;
index index.html;
}
}
1.win+r打开运行 输入 :drivers
2.进入etc目录
3.使用notepad++打开hosts文件
4.添加域名解析
日志切割
[root@web01 ~]# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily # 每天切割日志
missingok # 日志丢失忽略
rotate 52 # 日志保留52天
compress # 日志文件压缩
delaycompress # 延迟压缩日志
notifempty # 不切割空文件
create 640 nginx adm # 日志文件权限
sharedscripts
postrotate # 切割日志的命令
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}