nginx 初探
请求 -> ngnix -> apache
- 缓存
- varnish
- keep alive
- memcache
- 功能,模块
- memcached
- 是一个软件
- 地址重写
- 服务器端 连接转发
安装 centos7 及环境准备
- 修改网络配置
- vi /etc/sysconfig/network-scripts/ifcfg-enp0s3,然后修改为
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=308afc04-30ae-42ac-ada2-5cc1b973c84f
DEVICE=enp0s3
ONBOOT=yes
主要是
BOOTPROTO=dhcp
和ONBOOT=yes
- vi /etc/sysconfig/network-scripts/ifcfg-enp0s3,然后修改为
- 重启网络服务
- service network restart
- 安装 ssh
- yum install openssh-server
- 安装网络工具
- yum install net-tools
- 查看 ssh 端口是否开放
- 查看ssh是否在运行
- ps aux | grep ssh
- 查看所占端口
- 根据程序名称查看:
netstat -anp |grep sshd
- 根据 PID 查看:
netstat -anp | grep 1265
- 根据程序名称查看:
- 查看ssh是否在运行
- 安装 SunJDK
- 安装 wget
- yum install wget
- 配置 Java 环境变量
- export JAVA_HOME=/home/yhj/developer/java8
- export PATH= PATH: P A T H : JAVA_HOME/bin
- export CLASSPATH=.: JAVAHOME/lib: J A V A H O M E / l i b : JAVA_HOME/jre/lib
- 安装 wget
防火墙设置
设置时间
- date //查看本地
- hwclock –show //查看硬件的时间
- 如果硬件的时间是对不上,那就对硬件的时间进行修改、
- hwclock –set –date ‘2016-01-08 15:15:15’ //设置硬件时间
- hwclock –hctosys //设置系统时间和硬件时间同步
- clock -w //保存时钟
- 最后在通过重启,init 6 (reboot) //重启后,查看系统时间是否真正生效
补全 man 手册
- 下载手册:https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/
- 解压
- 进入对应目录: make install
防火墙规则
- 参考博客
- 添加:
firewall-cmd --permanent --zone=public --add-port=80/tcp
- 重启:
systemctl restart firewalld.service
- 添加:
- 参考博客
预备知识
Nginx 编译和安装
- 安装相应编译工具
- zlib: nginx 提供 gzip 模块,需要 zlib 库支持
- openssl: Nginx 提供 ssl 功能
- pcre: 支持地址重写 rewrite 功能
- 相关命令
sudo yum -y install gcc gcc-c++ autoconf automake
sudo yum -y install zlib zlib-devel openssl openssl-devel prce-devel
- 创建用户
groupadd -r nginx
useradd -s /sbin/nologin -g nginx -r nginx
- 查看:id nginx
- 编译
./configure \
--prefix=/usr \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
- 安装
- make && make install
- 启动
- nginx -c /etc/nginx/nginx.conf
- 查看是否启动
- 查看是否有进程:ps aux | grep nginx
- 查看是否监听端口:netstat -tulnp | grep 80
- 停止服务
- 从容关闭: kill -QUIT $(cat /var/run/nginx/nginx.pid)
- 快速停止:kill -TERM $(cat /vat/run/nginx/nginx.pid)
- 强制结束所有的 nginx 进程: kill -KILL nginx
- 重启服务
- kill -HUP $(cat /var/run/nginx/nginx.pid)
- 检查配置文件语法
- nginx -t -c /etc/nginx/nginx.conf
-t
: 测试,-c
配置文件- 创建启动脚本
- 方法一(没成功,但是理论没错):
- 官方脚本 貌似 在我电脑上用不了
- 添加脚本到
/etc/init.d/
目录下 - 添加权限
chmod a+x /etc/init.d/nginx
- 添加 chkconfig 连接
chkconfig --add nginx
- 设置 chkconfig 状态
chkconfig --level 2345 nginx on
- 查看 chkconfig 状态
chkconfig --list nginx
- 方法二(正常工作):
- 参见博客
- 创建脚本:
nginx.service
,拷贝到/lib/systemd/system
目录下
[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/kill -s HUP $PIDFile
ExecStop=/bin/kill -s TERM $PIDFile
[Install]
WantedBy=multi-user.target
- 刷新服务依赖
systemctl daemon-reload
- 添加开启启动
systemctl enable nginx.service
- 禁止开启启动
systemctl disable nginx.service
- 添加开启启动
- nginx 配置文件
- nginx 匹配规则
- location:
语法:
location [=|~|~*|^~]/uri/{…}
根据参数 uri 的不同来进行需求配置,可以使用字符串和正则表达式,如果使用正则表达式则需要指定一下前缀:
- ~ : 区分大小写
- ~* : 不区分大小写
- ^~ : 禁止大小写
- = : 精确匹配
- location:
- nginx 匹配规则