Nginx网站服务
Posted 格格巫 MMQ!!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx网站服务相关的知识,希望对你有一定的参考价值。
编译安装 nginx
1)安装支持软件
Nginx
的配置及运行需要 pcre、zlib 等软件包的支持,因此应预先安装这些软件的开 发包(devel),以便提供相应的库和头文件,确保 Nginx
的安装顺利完成。
[root@localhost
~]# yum -y install pcre-devel zlib-devel
2)创建运行用户、组
Nginx
服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确
地控制其访问权限,增加灵活性、降低安全风险。例如,创建一个名为
nginx 的用户,不建
立宿主文件夹,也禁止登录到
Shell 环境。
[root@localhost
~]# useradd -M -s /sbin/nologin nginx
3)编译安装 Nginx
配置 Nginx
的编译选项时,将安装目录设为/usr/local/nginx,运行用户和组均设为
nginx;启用
http_stub_status_module 模块以支持状态统计,便于查看服务器的连接信息。
具体选项根据实际需要来定,配置前可参考“./configure
–help”给出的说明。
[root@localhost
~]# tar zxf nginx-1.12.0.tar.gz
[root@localhost
~]# cd nginx-1.12.0
[root@localhost
nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx
–group=nginx
–with-http_stub_status_module
[root@localhost
nginx-1.12.0]# make && make install
为了使 Nginx
服务器的运行更加方便,可以为主程序 nginx 创建链接文件,以便管理员
直接执行“nginx”命令就可以调用
Nginx 的主程序。
[root@localhost
nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost
nginx-1.12.0]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx
1 root root 27 5 月 16 16:50 /usr/local/sbin/nginx ->
/usr/local/nginx/sbin/nginx
Nginx 的运行控制
1)检查配置文件
与 Apache
的主程序 httpd 类似,Nginx 的主程序也提供了“-t”选项用来对配置文件
进行检查,以便找出不当或错误的配置。配置文件
nginx.conf 默认位于安装目录下的 conf/
子目录中。若要检查位于其他位置的配置文件,可使用“-c”选项来指定路径。
[root@localhost
~]# nginx -t
nginx:
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx:
configuration file /usr/local/nginx/conf/nginx.conf test is successful
2)启动、停止 Nginx
直接运行 Nginx
即可启动 Nginx 服务器,这种方式将使用默认的配置文件,若要改用其
他配置文件,需添加“-c
配置文件路径”选项来指定路径。需要注意的是,若服务器中已
装有 httpd
等其他 Web 服务软件,应采取措施(修改端口、停用或卸载)避免冲突。
[root@localhost ~]# nginx 通过检查 Nginx
程序的监听状态,或者在浏览器中访问此 Web 服务(默认页面将显示“Welcom to nginx!”),可以确认 Nginx 服务是否正常运行。
[root@localhost
~]# netstat -anpt | grep nginx
tcp
0 0 0.0.0.0:80 0.0.0.0:* LISTEN
7180/nginx:
master
[root@localhost
~]# yum -y install elinks
[root@localhost ~]# elinks http://localhost 使用 elinks 浏览器
//显示“Welcome
to nginx!”页面,表明 Nginx 服务已经正常运行
主程序 Nginx
支持标准的进程信号,通过 kill 或 killall 命令发送 HUP 信号表示重载
配置,QUIT
信号表示退出进程,KILL 信号表示杀死进程。例如,若使用 killall 命令,重
载配置、停止服务的操作分别如下所示(通过“-s”选项指定信号种类)。
[root@localhost
~]# killall -s HUP nginx //选项 -s HUP 等同于 -1
[root@localhost
~]# killall -s QUIT nginx //选项 -s QUIT 等同于 -3
当 Nginx
进程运行时,PID 号默认存放在 logs/目录下的 nginx.pid 文件中,因此若改
用 kill
命令,也可以根据 nginx.pid 文件中的 PID 号来进行控制。
3)添加 Nginx 系统服务
为了使 Nginx
服务的启动、停止、重载等操作更加方便,可以编写基于 CentOS 7.3 的
Nginx
服务控制文件使用 systemctl 工具来进行管理,CentOS7.3 系统的管理习惯。
[root@localhost
~]# vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx //描述
After=network.target //描述服务类别
[Service]
Type=forking //后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid //PID
文件位置
ExecStart=/usr/local/nginx/sbin/nginx //启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID //根据 PID
重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID //根据 PID
终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@localhost
~]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost
~]# systemctl enable nginx.service
Created
symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to
/usr/lib/systemd/system/nginx.service. 这样一来,就可以 systemctl 命令来启动、停止、重启、重载 Nginx 服务器了,方法是在执行时添加相应的 start、stop、restart、reload 参数。
配置文件 nginx.conf
在 Nginx
服务器的主配置文件/usr/local/nginx/conf/nginx.conf 中,包括全局配置、
I/O 事件配置和
HTTP 配置这三大块内容,配置语句的格式为“关键字 值;”(末尾以分号
表示结束),以“#”开始的部分表示注释。
1.全局配置
由各种配置语句组成,不使用特定的界定标记。全局配置部分包括
Nginx 服务的运行用
户、工作进程数、错误日志、PID
存放位置等基本设置。
#user nobody; //运行用户
worker_processes 1; //工作进程数量
#error_log logs/error.log;
//错误日志文件的位置
#pid logs/nginx.pid; //PID 文件的位置
上述配置中,worker_processes
表示工作进程的数量。若服务器有多块 CPU 或者使用
多核处理器,可以参考
CPU 核心总数来指定工作进程数,如设为 8;如果网站访问量需求并
不大,一般设为 1
就够用了。其他三项配置均已有注释,表示采用默认设置,例如,Nginx
的运行用户实际是编译时指定的
nginx,若编译时未指定则默认为 nobody。
2.I/O 事件配置
使用“events
” 界定标记,用来指定 Nginx 进程的 I/O 响应模型、每个进程的连
接数等设置。对于
2.6 及以上版本的内核,建议使用 epoll 模型以提高性能;每个进程的连
接数应根据实际需要来定,一般在
10 000 以下(默认为 1024)。
events
use epoll; //使用 epoll 模型
worker_connections 4096; //每进程处理 4096 个连接
若工作进程数为
8,每个进程处理 4 096 个连接,则允许 Nginx 正常提供服务的连接
数已超过 3
万个(4 096×8=32 768),当然具体还要看服务器硬件、网络带宽等物理条件的
性能表现。
3.HTTP 配置
使用“http
”界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连
接保持,以及后面要讲到的虚拟
Web 主机、php 解析等一系列设置,其中大部分配置语句都
包含在子界定标记“server
”内。
http
include
mime.types;
default_type
application/octet-stream;
log_format
main '$remote_addr -
r
e
m
o
t
e
u
s
e
r
[
remote_user [
remoteuser[time_local] “$request” ’
'$status
b
o
d
y
b
y
t
e
s
s
e
n
t
"
body_bytes_sent "
bodybytessent"http_referer" ’
‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;
access_log logs/access.log main; //访问日志位置
sendfile on; //支持文件发送(下载)
#tcp_nopush
on;
#keepalive_timeout
0;
keepalive_timeout 65; //连接保持超时
#gzip
on;
server //Web 服务的监听配置
listen 80; //监听地址及端口
server_name www.bt.com; //网站名称(FQDN)
charset utf-8; //网页的默认字符集
location / //根目录配置
root html; //网站根目录的位置
index index.html index.php; //默认首页(索引页)
error_page 500 502 503 504 /50x.html;
//内部错误的反馈页面
location = /50x.html //错误页面配置
root
html;
上述配置中,listen
语句允许同时限定 IP 地址,采用“IP 地址:端口”形式;root 语
句用来设置特定访问位置(如“location
/”表示根目录)的网页文档路径,默认为 Nginx
安装目录下的
html/子目录,根据需要可改为/var/www/html 等其他路径。
访问状态统计
Nginx 内置了
HTTP_STUB_STATUS 状态统计模块,用来反馈当前的 Web 访问情况,配置
编译参数时可添加–with-http_stub_status_module
来启用此模块支持,可以使用命令
/usr/local/nginx/sbin/nginx
–V 查看已安装的Nginx是否包含HTTP_STUB_STATUS模块。
要使用 Nginx
的状态统计功能,除了启用内建模块以外,还需要修改 nginx.conf 配置
文件,指定访问位置并添加
stub_status 配置代码。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf ……
//省略部分信息
http …… //省略部分信息
server
listen
80;
server_name www.bt.com;
charset
utf-8;
location
/
root
html;
index
index.html index.php;
location /status //访问位置为/status
stub_status on; //打开状态统计功能
access_log off; //关闭此位置的日志记录
[root@localhost ~]# systemctl restart nginx
新的配置生效以后,在浏览器中访问 Nginx 服务器的/status 网站位置,可以看到当前的状态统计信息,其中“,Active
connections”表示当前的活动连接数(2);而“server accepts handled
requests”表示已经处理的连接信息,三个数字依次表示已
处理的连接数(2)、成功的 TCP 握手次数(2)、已处理的请求数(14)。
桥接模式
连接到以太网
查看地址
测试ping www.baidu.com
使用远程连接做如下实验:
关闭防火墙
systemctl
stop firewalld
setenforce 0
sestatus
安装服务
yum install
gc - gcc+ -y
yum -y
install \\
pcre-devel
\\
zlib-devel
新建用户
useradd
-M -s /sbin/nologin nginx
上传压缩包 解压 切换目录
tar xzvf
nginx-1.13.7.tar.gz -C /usr/src/
安装服务
./configure
\\
–prefix=/usr/local/nginx
\\
–user=nginx
\\
–group=nginx
\\
–with-http_stub_status_module
编译安装
make
&& make install
软连接
ln -s
/usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx -t //配置文件语法检查
nginx //启动服务
-------制作管理角本--------
vi
/etc/init.d/nginx
#!/bin/bash
chkconfig: 35 99 20
description: Nginx Service Control Script
PROG=“/usr/local/nginx/sbin/nginx”
PIDF=“/usr/local/nginx/logs/nginx.pid”
case
“$1” in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0
start|stop|restart|reload"
exit 1
esac
exit 0
修改权限 使Nginx生效
chmod +x
/etc/init.d/nginx
chkconfig
–add nginx
vi
/usr/local/nginx/conf/nginx.conf
解决上图出现的问题
ulimit -n 65500//查看和更改系统本地打开资源数
ulimit -n
65500 >> /etc/rc.local
—配置统计功能----
vi
/usr/local/nginx/conf/nginx.conf
-
location
-
/status
stub_status on; access_log off; //在server 模块里的error_page 上面增加
service
nginx reload
cat
/usr/local/nginx/logs/access.log
访问http://192.168.0.100/
访问http://192.168.0.100/status/
-----以下配置nginx的验证功能—
yum install
httpd-tools -y
安装服务
htpasswd -c
/usr/local/nginx/passwd.db jack
添加账户和密码 用户为jack 密码为1
chmod 400
/usr/local/nginx/passwd.db
修改权限 只有主人可以读取
切换目录
cd
/usr/local/nginx/
修改主人的权限
chown nginx
passwd.db
查看
vi
/usr/local/nginx/conf/nginx.conf
找到这个位置
location /
root html;
index index.html index.htm;
allow 192.168.0.0/24; 修改为本地虚拟机网段的地址
deny all;
auth_basic "secret";
auth_basic_user_file
/usr/local/nginx/passwd.db;
重启服务
systemctl
restart nginx
------以下配置虚拟主机功能-------
—基于域名----
编辑配置文件
新建
mkdir extra
vi
/usr/local/nginx/conf/nginx.conf
将下面命令插入
server
listen 80;
server_name www.bt.com;
charset utf-8;
access_log logs/bt.access.log main;
location /
root /var/www/bt;
index index.html index.htm;
error_page 500 502 503 504 /50x.html;
location = /50x.html
root html;
server
listen 80;
server_name www.bc.com;
charset utf-8;
access_log logs/bc.access.log main;
location /
root /var/www/bc;
index index.html index.htm;
error_page 500 502 503 504 /50x.html;
location = /50x.html
root html;
解决问题
切换目录查看
复制目录到当前目录
cp
…/vhost.conf ./
编辑配置文件
vi
/usr/local/nginx/conf/nginx.conf
删除和上图对比
编辑配置文件
添加命令 include extra/vhost.conf;
切换目录
cd
/usr/local/nginx/conf/
编辑配置文件 添加dns
vim
/etc/hosts
-------基于IP的-----
listen 192.168.80.193:80;
—基于端口的-----
listen 192.168.80.193:8080;
以上是关于Nginx网站服务的主要内容,如果未能解决你的问题,请参考以下文章
用Docker启动php-5.6 fpm服务配合宿主机nginx运行php测试环境
Nginx官方镜像私有化定制,实现时区同步及自动挂载配置文件到宿主机