Linux命令-nginx服务器

一. nginx简介

  Nginx 是一个高性能的HTTP和反向代理web服务器,具有占有内存少,并发能力强的特点。

  • 正向代理

在这里插入图片描述

  • 反向代理

在这里插入图片描述

  • 实际应用

在这里插入图片描述


安装

	sudo apt install nginx

  /usr/sbin/目录下是nginx命令所在目录,/etc/nginx/目录下是nginx所有的配置文件,用于配置nginx服务器以及负载均衡等信息。


进程简介

  ps -ef | grep nginx #ps -ef查看全格式所有进程	e--Select all processes  f-- Do full-format listing

  有一个 master 进程和多个 worker 进程。master 进程主要用来管理 worker 进程,包含:接收来自外界的信号,向各 worker 进程发送信号,监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动重新启动新的 worker 进程。多个 worker 进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个 worker 进程中处理,一个 worker 进程,不可能处理其它进程的请求。worker 进程的个数是可以设置的,一般我们会设置与机器 CPU 核数一致,这里面的原因与 Nginx 的进程模型以及事件处理模型是分不开的。

配置文件说明

打开/etc/nginx/nginx.conf,可以看到第 62行,http模块中有语句:include /etc/nginx/sites-enabled/*;

说明:
  • 此目录下的所有配置文件均有效,修改配置文件应该是/etc/nginx/sites-enabled/default

    • 如果需要备份/etc/nginx/sites-enabled/default,不能与default存放于同一目录,会产生配置冲突

    • 另外,/etc/nginx/sites-available/default是当前生效的配置文件

    • default 文件中的server模块部分配置介绍 *见文末尾说明

      server模块配置是http模块中的一个子模块,用来定义一个虚拟主机,也就是一个虚拟服务器的配置信息

      server_name _;   **见文末尾说明

      default server;    *** 见文末尾说明

基本命令

  sudo nginx -s stop			#停止服务		-s signal向master进程发送一个信号 stop信号
  sudo nginx					#这两条命令都可以启动服务
  sudo systemctl start nginx



二. 虚拟主机配置

  sudo vim /etc/nginx/sites-enabled/default
  #原有的server模块保持不变,新增两个server模块
  server {
          listen 80;
          listen [::]:80;
  
          server_name www.example1.com;
  
          root /var/www/example1;
          index index.html;
  
          location / {
                  try_files $uri $uri/ =404;
          }
  }
  server {
          listen 80;
          listen [::]:80;
  
          server_name www.example2.com;
  
          root /var/www/example2;
          index index.html;
  
          location / {
                  try_files $uri $uri/ =404;
          }
  }

vim末行模式
:79,91 co $ #需修改的部分复制两份,原始内容不变
:92,$ co $
:92,$ s/#// #92到文件结尾,把所有的#替换成空(相当于删除#) s替换 /分隔符
:79,$ s/^/#/g #添加# 把虚拟主机部分屏蔽,设置负载均衡

测试

  sudo nginx -t						#测试语法正确性
  sudo systemctl restart nginx		#重启服务
  
  #修改/etc/hosts文件,进行域名解析
  #windows浏览器访问,需要修改host文件C:\Windows\System32\drivers\etc\host
  sudo vim /etc/hosts	

在这里插入图片描述

设置防火墙

  sudo ufw allow http

打开浏览器访问服务




三. 设置反向代理和负载均衡

  • 修改配置文件,增加upstream节点
  sudo vim /etc/nginx/sites-enabled/default

  在http节点内增加upstream节点,主配置文件在/etc/nginx/nginx.conf的http节点中包括default,实际upstream节点增加在default文件的server节点外即可。

  upstream mysrv{
    server 192.168.92.134 weight=1 max_fails=2 fail_timeout=10s;
    server 192.168.92.136 weight=2 max_fails=2 fail_timeout=10s;
    #fail_timeout作用:在单位周期为fail_timeout设置的时间,中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功
  #192.168.92.134 是ubuntu地址
  #192.168.92.136	是另一台主机地址,windows或ubuntu 

置虚拟主机时新增的server模块注释掉一个,在另一个中修改

  server {
          listen 80;
          listen [::]:80;
          server_name www.example1.com;
         # server_name 192.168.1.7;		#此处三行不需要
         #root /var/www/html/local1/;
         #index index.html;
          location / {
                  try_files $uri $uri/ =404;
                  proxy_pass http://mysrv; 	#此处mysrv应是upstream节点的名称
          }
  }

重启服务

  sudo systemctl restart nginx

修改网站首页index.html

  sudo vim /var/www/html/*.html

在这里插入图片描述

设置第二台服务器的nginx(可用windows的IIS代替)

  #安装nginx
  sudo apt install nginx
  #设置防火墙
  sudo ufw allow from 192.168.92.1/24		#允许整个网段通过
  #修改网站首页
  sudo vim /var/www/html/*.html

在这里插入图片描述

打开第一台主机浏览器测试

在这里插入图片描述

补充说明:

官方文档:

http://nginx.org/en/docs/http/server_names.html

server {

listen 80 default_server;

******server_name _;

return 444;

}

There is nothing special about this name, it is just one of a myriad of invalid domain names which never intersect with any real name. Other invalid names like “--” and “!@#” may equally be used.

没什么特别的,大量无效域名中的一个,这个名字不会是真正域名,其它像“--” and “!@#”这样的字符同样可以在这里使用(也就是说,不是必须使用_,其它字符也可以)。

此处server_name _具体含义:对于任意其它域名,都由此server模块设定的default_server来处理,如果没有显式的指定default_server,默认由第一个server模块处理,即当前server。



default_server介绍

​ listen 80 default_server;

​ listen [::]:80 default_server;

​ #default_server 指令可以定义默认的 server 出处理一些没有成功

​ 匹配server_name 的请求,如果没有显式定义,则会选取第一个定义

​ 的 server 作为 default_server



server 模块部分配置

​ server {

​ listen 80;

​ server_name 域名 或192.168.1.100;

​ #local1是新建的网站1的根目录 根目录中新建index.html文件

​ # 输入内容The home page of example1

​ root /var/www/html/local1;

​ index index.php index.html index.html;

​ charset utf-8; #可以不写

#以下两行可以不写 ,因为在/etc/nginx/nginx.conf配置文件中已经指明日志路径

#如果按以下格式写 则需要sudo mkdir /usr/share/nginx/logs,否则服务不能启动

​ access_log logs/access.log; #logs目录相对于/usr/share/nginx目录而言

​ error_log logs/error.log;

​ …

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值