nginx源码安装
首先,下载一个nginx软件包,然后对其进行解压。
tar zxvf nginx-1.12.2.tar.gz #解压nginx软件包,生成一个nginx目录
cd /nginx-1.12.2/ #进入该目录
yum -y install gcc gcc-c++ pcre-devel zlib-devel make #安装下依赖包
./configure --prefix=/usr/local/nginx \ #指定安装路径
--user=nginx \ #指定用户
--group=nginx \ #指定组
--with-http_stub_status_module #开启状态统计模块,可以通过网页查看服务状态
make && make install #编译并安装
useradd -M -s /sbin/nologin nginx #创建一个nginx的用户,并且不给家目录不给登录,防止有人用过nginx的家目录进行入侵
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ #创建启动文件的软连接放入/usr/local/sbin/目录下,使得通过nginx可以直接启动该服务
将nginx加入systemctl管理
vim /usr/lib/systemd/system/nginx.service #在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=/bin/kill -s HUP $MAINPID #重载服务的配置
ExecStop=/bin/kill -s QUIT $MAINPID #停止服务
PrivateTmp=true
[Install]
WantedBy=multi-user.targe #设置启动级别
#为了安全起见,将nginx.service设置成754的权限
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service #启动nginx
systemctl enable nginx.service #将nginx设置为开机自启
开启状态统计
首先为了便于本机通过域名访问搭建的nginx(方便测试),在/etc/hosts文件中写入域名和ip地址的映射,并在nginx.conf文件中修改域名
echo "192.168.214.214 www.shiki.com" >> /etc/hosts
cp nginx.conf nginx.conf.bak #对配置文件修改前记得备份
vim /usr/local/nginx/conf/nignx.conf
#在37行找到server_name,把后面的域名修改一下
server_name www.shiki.com;
然后在46行后新添加几行内容,这几行内容表示开启状态统计
location /status { #这里的/表示的是www.shiki.com这个域名,/表示的目录就是/usr/local/nginx/html
stub_status on; #开启状态统计
access_log off; #关闭日志记录,可以开,但没必要
}
systemctl restart nginx #保存conf文件中的修改后重启服务
最后验证一下
Active connections :表示当前的活动连接数;
service accepts handled requests:表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数
访问控制
首先创建一个用户zhnagsan,之后我们要对zhangsan进行访问限制,访问限制即对用户访问目录进行限制,在网页上的体现就是访问某些网页是要求认证才能继续访问。
useradd zhangsan
echo "123" |passwd --stdin zhangsan
访问限制需要用到httpasswd这个工具,这个工具依赖于httpd-tools
yum -y install httpd-tools
httpasswd -c /usr/local/nginx/passwd.db zhangsan #db代表这是一个数据文件
New password: #输入登录网页的验证密码
Re-type new password:
Adding password for user zhangsan #密码设置成功
chown nginx /usr/local/nginx/passwd.db #将passwd.db文件属组设置为nginx
chmod 400 /usr/local/nginx/passwd.db #设置一下权限
vim /usr/local/nginx/conf/nginx.conf
#在43行这里的location中添加下面的内容
location / {
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
root html;
index index.html index.htm;
}
systemctl restart nginx #重启服务
清除一下浏览器的cookie缓存,最后验证一下
虚拟主机
首先创建一个新的域名和ip地址的映射,在创建一个存放网页文件的目录,最后在这个目录中创建一个主页文件
echo "192.168.214.214 www.darksoul.com" >> /etc/hosts
mkdir -p /var/www/html/darksoul
echo "<h1>good luck have fun</h1>" >/var/www/html/darksoul/index.html
基于域名的虚拟主机
进入nginx.conf文件中,在大约89行,把那一段注释去掉,然后进行修改
vim /usr/local/nginx/conf/nginx.conf
#修改成下面的样子
server {
listen 80;
server_name www.darksoul.com;
charset utf-8;
access_log logs/darksoul.access.log;
location / {
root /var/www/html/darksoul;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
systemctl restart nginx
验证一下
基于不同ip地址的虚拟主机
server {
listen 192.168.214.215:80;
server_name www.darksoul.com;
charset utf-8;
access_log logs/darksoul.access.log;
location / {
root /var/www/html/darksoul;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
验证一下
基于不同端口的虚拟主机
server {
listen 192.168.214.214:800;
server_name www.darksoul.com;
charset utf-8;
access_log logs/darksoul.access.log;
location / {
root /var/www/html/darksoul;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
验证一下