nginx的基本使用

本文详细介绍了如何在Linux系统中配置静态IP,开放端口,安装并配置Nginxweb服务器,包括启动、关闭命令和配置文件解析。此外,还涵盖了正向代理、反向代理的实现,以及动静分离和负载均衡的配置方法,最后讨论了使用Keepalived实现Nginx的高可用性。
摘要由CSDN通过智能技术生成

1、 配置静态ip

  • 进入linux系统

  • 编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件

  • 添加以及修改几个内容

# 添加的内容
IPADDR=192.168.222.102  #静态ip
NETMASK=255.255.255.0  #子网掩码
GATEWAY=192.168.222.1   #网关 一般为该网段的第一个
DNS1=8.8.8.8    #可以有多个

# 修改的内容
BOOTPROTO=static      #即设置为静态
  • 重置网络
systemctl restart network

2、开放端口

  • 列出已经开放的端口
firewall-cmd --list-all
  • 添加端口
firewall-cmd --add-port=8080/tcp --permanent
  • 重启防火墙
firewall-cmd --reload

3、安装nginx

1、安装nginx的依赖

  • nginx是由c语言写的,所以需要安装c的编译环境及正则表达式库等第三方依赖
yum install gcc pcre-devel zlib-devel openssl openssl-devel

2、下载nginx的压缩包

  • 下载wget
yum install wget
  • 下载nginx压缩包
wget https://nginx.org/download/nginx-1.22.1.tar.gz
  • 解压nginx
tar xvf nginx-1.22.1.tar.gz
  • 配置nginx的编译环境
cd nginx-1.22.1
./configure --prefix=/usr/local/nginx

3、nginx命令

  • 查看版本
./nginx -v
  • 启动nginx
./nginx
  • 关闭nginx
./nginx -s stop
  • 重新加载配置文件
./nginx -s reload

4、nginx配置文件

  • 共有三部份:全局块、events、http块(http全局块、server块)
#全局块,到events之前都是:主要是配置一些nginx整体运行的指令


#user  nobody;			#配置nginx服务器的用户组
worker_processes  1;	#允许生成worker process 数  值越大表示nginx处理的并发数量越多

#error_log  logs/error.log;   #日志存放路径以及类型
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;   #进程pid存放路径


events {
    worker_connections  1024;	#每个worker process可以同时支持的最大连接数
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

安装一个web服务器

  • 下载tomcat
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.7/bin/apache-tomcat-10.1.7.tar.gz
  • 进入下载目录解压tomcat
tar xvf apache-tomcat-10.1.7.tar.gz
  • 进入tomcat文件夹中的bin目录,启动tomcat
cd apache-tomcat-10.1.7/bin && ./startup.sh

5、正向代理

6、反向代理

1、反向代理一

​ 逻辑流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PNVmfHcV-1680255276840)(C:/Users/88463/AppData/Roaming/Typora/typora-user-images/image-20230329004918598.png)]

  • 修改配置文件的server部分
server {
        listen       80;
        server_name  192.168.0.101;   # 修改1   当前nginx的ip

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
        	proxy_pass http://192.168.0.102:8080;	# 修改2   web服务器的ip及端口
            root   html;
            index  index.html index.htm;
        }
  • 重新加载配置文件
./nginx -s reload

2、反向代理二

逻辑图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bkA6k2IB-1680255276841)(assets/image-20230329022353842.png)]

  • 配置文件
 server {
        listen       8000;
        server_name  192.168.0.102;

        location ~/edu/ {
            proxy_pass http://192.168.0.103:8080;
        }
        location ~/mod/{
        	proxy_pass http://192.168.0.104:8080;
        }
    }

  • 加载配置文件
./nginx -s reload

其他的正则匹配规则有

location[ = | ~ | ~* | ^~ ]uri{

}
# 1、=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功就停止向下搜索并立即处理该请求
# 2、~:用于表示uri包含正则表达式,并且区分大小写
# 3、~*:用于表示uri包含正则表达式,并且不区分大小写
# 4、^~:用于不含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此# # #		 location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
# 注意:如果uri包含正则表达式,则必须有~或者~*标识

7、动静分离

逻辑图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8qHUq3j-1680255276842)(assets/image-20230329031528408.png)]

  • 配置文件
server {
        listen       8000;
        server_name  192.168.0.102;

        location /www/ {
        	root /data/;
        	autoindex on;  # 列出当前文件夹里的所有文件
            
        }
        
    }

8、负载均衡

​ 逻辑图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HauW7Ie6-1680255276842)(C:/Users/88463/AppData/Roaming/Typora/typora-user-images/image-20230329004950877.png)]

  • 配置文件
  # 添加的部分
  upstream myserver{
  server 192.168.0.103:8080;
  server 192.168.0.104:8080;
  }
  server {
        listen       80;
        server_name  192.168.0.102;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
        	proxy_pass http://myserver;	#添加的部分二
            root   html;
            index  index.html index.htm;
        }

  • 重加载配置文件
./nginx -s reload

负载均衡的分发策略

  • 轮询(默认)
# 添加的部分
  upstream myserver{
  server 192.168.0.103:8080;
  server 192.168.0.104:8080;
  }
  server {
        listen       80;
        server_name  192.168.0.102;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
        	proxy_pass http://myserver;	#添加的部分二
            root   html;
            index  index.html index.htm;
        }

  • 加权:根据权重比例分配客户端请求
# 添加的部分
  upstream myserver{
  server 192.168.0.103:8080 weight=5;
  server 192.168.0.104:8080 weight=10;
  }
  server {
        listen       80;
        server_name  192.168.0.102;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
        	proxy_pass http://myserver;	#添加的部分二
            root   html;
            index  index.html index.htm;
        }

  • ip_hash:每个请求按照ip的hash结果进行转发,这样每个ip只能固定访问一个web服务器,可以解决session问题
# 添加的部分
  upstream myserver{
  ip_hash;
  server 192.168.0.103:8080;
  server 192.168.0.104:8080;
  }
  server {
        listen       80;
        server_name  192.168.0.102;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
        	proxy_pass http://myserver;	#添加的部分二
            root   html;
            index  index.html index.htm;
        }

  • fair:按照后端服务器的响应时间来进行分配,响应时间短的优先分配
# 添加的部分
  upstream myserver{
  server 192.168.0.103:8080;
  server 192.168.0.104:8080;
  fair;
  }
  server {
        listen       80;
        server_name  192.168.0.102;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
        	proxy_pass http://myserver;	#添加的部分二
            root   html;
            index  index.html index.htm;
        }

9、高可用

逻辑图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-03mQJcfm-1680255276843)(C:/Users/88463/AppData/Roaming/Typora/typora-user-images/image-20230329005841546.png)]

  • 安装keepalived
yum install keepalived -y
  • 进入/etc/keepalived
  • 修改keepalived.conf文件
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL			#主机名字  注意:这个名字要加入到hosts文件中
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}:q
# 加入的内容一
vrrp_script chk_http_port{   # 整段都加入
	script "/usr/local/nginx/conf/nginx_check.sh"     # 脚本文件地址
	
	interval 2   # 检测脚本执行的间隔
	
	weight 2

}

vrrp_instance VI_1 {
    state MASTER	#备份服务器上将MASTER改为BACKUP     修改的内容二
    interface eth0		# 网卡						修改的内容三
    virtual_router_id 51	# 主、备份机的virtual_router_id必须相同     修改的内容四
    priority 100			# 主、备机取不同的优先级,主机优先级大,备份机次之   修改的内容五
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {  # 虚拟ip地址
        192.168.200.16
        192.168.200.17
        192.168.200.18
    }
}
  • 脚本文件nginx_check.sh
#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [ $A -eq 0];then
	/usr/local/nginx/sbin/nginx
	sleep 2
	if [ `ps -C nginx --no-header |WC -l` -eq 0 ];then
		killall keepalived
	fi
fi
  • 编辑/etc/hosts
127.0.0.1 LVS_DEVEL   #在文件中添加这一行
  • 启动keepalived
systemctl start keepalived.service
  • 重新启动网络
systemctl restart network
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值