Nginx网站服务

简介: Nginx网站服务

一、Nginx服务的基础


- Nginx介绍:


Nginx是一款由俄罗斯开发的开源的高性能的web服务器和反向代理服务器,同时支持IMAP/POP3/SMTP代理服务,性能优势尤为显著,官方声称,Nginx服务器开源处理最高50000的并发请求


- 特点:


(1)稳定性高

(2)系统资源消耗低

(3)高性能,能够处理大并发

(4)主要用于静态的解析,动静页面的分离

——单台物理服务器可支持30000~50000个并发请求


- 优势:


  • 作为web服务器,Nginx处理静态文件、索引文件以及自动索引效率非常高
  • 作为代理服务器,Nginx可以实现无换成的反向代理加速,提高网站的运行速度
  • 作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器,对外进行服务,同时支持简单的容错和利用算法进行负载均衡
  • 性能方面,Nginx在实现上非常注重效率,采用内核Poll模型,可以支持更多的并发连接,最多可以支持50000的并发连接数,而且占用很少的内存资源
  • 稳定性方面,Nginx采用了分阶段资源分配技术,使得对CPU与内存的占用率非常低,并且官方称Nginx保持的10000个没有活动的连接,这些连接只占用2.5M内存,由此得出,类似于DOS这样的攻击几乎是无效的
  • 高可用方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或配置进行升级,即使运行数月也无需重新启动,几乎是做到了7*24小时的不间断运行


二、Nginx的安装及运行控制

******(1)挂载镜像、修改主机名、编写本地yum源等
[root@centos7-007 ~]# mount /dev/cdrom /media/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos7-007 ~]# hostname Nginx 
[root@centos7-007 ~]# echo "Nginx" > /etc/hostname
[root@centos7-007 ~]# bash
[root@Nginx ~]# cat /etc/yum.repos.d/centos.repo 
[aaa]                                                           
name=这是一个本地YUM                             
baseurl=file:///media/cdrom                          
enabled=1                                                         
gpgcheck=0    
******(2)安装Nginx必要组件
[root@Nginx ~]# yum -y install pcre-devel zlib-devel
。。。。。。
完毕!
******(3)创建运行账户和组
—————————————————————————————————华丽分割线————————————————————————————————————————————
Nginx程序默认以nobody的身份运行,创建专门的用户来实现准确控制其访问权限,增加灵活性,降低安全风险
——————————————————————————————————————————————————————————————————————————————————————
[root@Nginx ~]# useradd -M -s /sbin/nologin nginx
******(4)上传源码包,进行配置、编译、安装Nginx
[root@Nginx ~]# ll
总用量 964
-rw-------. 1 root root   1220 9月   3 18:16 anaconda-ks.cfg
-rw-r--r--  1 root root 980831 1月  12 20:05 nginx-1.12.0.tar.gz
[root@Nginx ~]# tar zxvf nginx-1.12.0.tar.gz 
[root@Nginx ~]# cd nginx-1.12.0
[root@Nginx nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx  --group=nginx --with-http_stub_status_module  && make && make install
(--with-http_stub_status_module   支持状态统计,便于查看服务器的连接信息)
******(5)安装后的优化调整,方便Nginx运行
创建软连接,管理员可以直接执行nginx命令去调用nginx主程序
[root@Nginx nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin/
******(6)运行控制
[root@Nginx nginx-1.12.0]# nginx -t  (检查配置文件是否完好)
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok  (ok就代表文件完好)
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@Nginx nginx-1.12.0]# nginx (启动nginx服务)
[root@Nginx nginx-1.12.0]# netstat -anpt | grep nginx  (检查监听端口,发现已经开启)
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3749/nginx: master  
******(7)访问nginx
开启一台win7,访问服务器地址,发现可以成功进行访问

20210112135517917.png


——————————————————————————————————————注意——————————————————————————————————————————
nginx支持标准的进程信号,HUP信号表示重载配置,QUIT信号表示退出进程,KILL信号表示杀死进程,可以使用killall命令进行重载配置或停止该服务的操作
1.如果没有安装killall命令,使用该命令安装
yum -y install psmisc
2.重载配置
killall -s HUP nginx = killall -1 nginx
3.停止服务
killall -s QUIT nginx = killall -3 nginx
4.杀死进程
killall -s KILL nginx
———————————————————————————————————————————————————————————————————————————————————
******(7)为了方便使用,使用chkconfig和systemctl工具进行管理,可以写一个nginx的服务脚本来进行运行控制
[root@Nginx nginx-1.12.0]# vim /etc/init.d/nginx  (就是利用kill去杀死进程pid号来实现的)
#!/bin/bash
# chkconfig: - 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
保存退出
******(8)赋予可执行权限、添加为系统服务
[root@Nginx nginx-1.12.0]# chmod +x /etc/init.d/nginx 
[root@Nginx nginx-1.12.0]# chkconfig --add nginx
******(9)使用systemctl命令进行管理nginx
[root@Nginx nginx-1.12.0]# systemctl status nginx  (查看状态)
● nginx.service - (null)
   Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
   Active: inactive (dead)   (发现是关闭状态)
     Docs: man:systemd-sysv-generator(8)
[root@Nginx nginx-1.12.0]# systemctl start nginx   (开启nginx服务)
[root@Nginx nginx-1.12.0]# systemctl status nginx  (再次查看nginx服务状态)
● nginx.service - SYSV: Nginx Service Control Script
   Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
   Active: active (running) since 二 2021-01-12 22:04:25 CST; 5min ago (变成了开启状态)
     Docs: man:systemd-sysv-generator(8)
  Process: 3878 ExecStop=/etc/rc.d/init.d/nginx stop (code=exited, status=0/SUCCESS)
  Process: 3880 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nginx.service
           ├─3882 nginx: master process /usr/local/nginx/sbin...
           └─3883 nginx: worker process
1月 12 22:04:25 Nginx systemd[1]: Stopped SYSV: Nginx Servic...
1月 12 22:04:25 Nginx systemd[1]: Starting SYSV: Nginx Servi...
1月 12 22:04:25 Nginx systemd[1]: Started SYSV: Nginx Servic...
Hint: Some lines were ellipsized, use -l to show in full.

三、Nginx的主配置文件——nginx.conf

配置文件位置:/usr/local/nginx/conf/nginx.conf
主配置文件分为三个部分:全局配置、I/O事件配置、HTTP配置
(1)全局配置:
包括运行用户、工作进程数、错误日志、PID文件存放位置等
选项:worker_processes 1;  (设置工作进程数量,可以参考CPU核心总数指定工作进程数,网站访问量越大,进程数设置越多)
(2)I/O事件配置:
指定Nginx进程的I/O响应模型,每个进程连接数等
选项: events {
      use epoll;               (使用epoll模型,提高性能)
      worker_connections 4096; (每个进程处理4096个连接)
      }
!!!!注意:如果工作进程数是8个,每个进程处理4096个连接,则Nginx提供服务的连接数是(4096*8),具体看服务器硬件和网络带宽等物理条件性能等
(3)HTTP配置:
设置访问日志、http端口、网页目录、默认字符集、连接保持、虚拟主机等信息

四、nginx服务的状态统计

启动状态统计模块,来反馈Web服务器的访问情况,也就是访问量监控
******(1)修改主配置文件
[root@Nginx ~]# vim /usr/local/nginx/conf/nginx.conf 
。。。。。。
 51         error_page   500 502 503 504  /50x.html;
 52         location = /50x.html {
 53             root   html;
 54         }
 55         location /status {     (写入)
 56              stub_status on;   (写入)
 57              access_log off;   (写入)
 58         }                      (写入)
 59         # proxy the PHP scripts to Apache listening on 127.0    .0.1:80
。。。。。。
保存退出
[root@Nginx nginx-1.12.0]# 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
[root@Nginx nginx-1.12.0]# systemctl restart nginx   (重启服务)
[root@Nginx nginx-1.12.0]# netstat -antp | grep nginx  (查看端口)
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3882/nginx: master  
[root@Nginx ~]# systemctl restart nginx (重启服务)
******(2)访问http://192.168.100.7/status (查看统计信息)
显示:
Active connections:1 (活跃连接数)
server accepts handled requests (已经处理的连接信息)
1(已经处理的连接数) 1(成功的TCP握手次数) 1(已经处理的请求数)
Reading: 0  Writing: 1 Waiting: 0

20210112140737752.png

五、部署Nginx虚拟主机


在上一个实验的基础上完成

******(1)部署nginx虚拟主机,配置不同虚拟主机的页面
[root@Nginx ~]# cd /usr/local/nginx/html/
[root@Nginx html]# ls
50x.html  index.html
[root@Nginx html]# mkdir aaa
[root@Nginx html]# mkdir bbb
[root@Nginx html]# echo "aaaaaaa" > aaa/index.html
[root@Nginx html]# echo "bbbbbbb" > bbb/index.html
******(2)修改主配置文件
[root@Nginx html]# vim /usr/local/nginx/conf/nginx.conf (编写主配置文件)
。。。。。。 (添加、修改)
 34     server {
 35         listen       80;
 36         server_name  www.aaa.com;
 37         charset utf-8;
 38         access_log  logs/aaa.access.log;
 39         location / {
 40             root   /usr/local/nginx/html/aaa;
 41             index  index.html index.php;
 42         }
 43        }
 44     server {
 45         listen       80;
 46         server_name  www.bbb.com; 47         charset utf-8;
 48         access_log  logs/bbb.access.log;
 49         location / { 
 50             root   /usr/local/nginx/html/bbb;
 51             index  index.html index.php;
 52         }
 。。。。。。
 保存退出
[root@Nginx html]# 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
[root@Nginx html]# systemctl restart nginx  (重启服务)
[root@Nginx html]# netstat -anpt | grep nginx   (查看监听端口)
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18715/nginx: master 
******(3)给win7配置hosts文件,访问不同的域名,验证nginx服务的虚拟主机

20210112142313599.png

进入到C:/Windows/System32/drivers/etc目录中,找到hosts文件,进行修改

20210112142442511.png

保存关闭,使用浏览器访问两个域名


20210112142531864.png

20210112142542724.png


至此,nginx虚拟主机完成!!!!

目录
相关文章
|
2月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
65 5
|
24天前
|
负载均衡 前端开发 JavaScript
Nginx 代理多服务
以上是 Nginx 代理多服务的几种常见方式,在实际应用中,可以根据具体的业务需求和系统架构选择合适的代理方式,并结合其他 Nginx 的功能和配置来优化和完善系统的性能和功能。
|
2月前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
2月前
|
应用服务中间件 Apache 开发工具
nginx服务企业应用
nginx服务企业应用
|
2月前
|
Docker 容器
docker nginx-proxy 添加自定义https网站
docker nginx-proxy 添加自定义https网站
39 4
|
2月前
|
前端开发 JavaScript 应用服务中间件
使用nginx部署网站
使用nginx部署网站
|
2月前
|
应用服务中间件 网络安全 nginx
nginx作为web服务以及nginx.conf详解
nginx作为web服务以及nginx.conf详解
|
2月前
|
Kubernetes 应用服务中间件 nginx
k8s基础使用--使用k8s部署nginx服务
本文介绍了Kubernetes中核心概念Deployment、Pod与Service的基本原理及应用。Pod作为最小调度单元,用于管理容器及其共享资源;Deployment则负责控制Pod副本数量,确保其符合预期状态;Service通过标签选择器实现Pod服务的负载均衡与暴露。此外,还提供了具体操作步骤,如通过`kubectl`命令创建Deployment和Service,以及如何验证其功能。实验环境包括一台master节点和两台worker节点,均已部署k8s-1.27。
206 1
|
2月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
85 0
|
4月前
|
应用服务中间件 nginx Docker
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)