返回顶部
首页 > 资讯 > 服务器 >nginx实现动静分离的方法示例
  • 640
分享到

nginx实现动静分离的方法示例

2024-04-02 19:04:59 640人浏览 安东尼
摘要

目录在server1上部署Nginx在server上部署lnmpnode3部署Httpd实现分离部署本文主要介绍了nginx实现动静分离的方法示例,具有一定的学习价值,具体如下 环境

本文主要介绍了nginx实现动静分离的方法示例,具有一定的学习价值,具体如下

环境:

系统/主机名 IP地址 服务
Redhat8 :server1 192.168.244.131 nginx
Redhat8:server2 192.168.244.133 lnmp
Content7:node3 192.168.244.142 httpd

在三台主机上关闭防火墙


[root@server1 ~]# systemctl stop firewalld
[root@server1 ~]# systemctl disable firewalld
[root@server1 ~]# vim /etc/selinux/config 
SELINUX=disabled

在server1上部署nginx


[root@server1 opt]# cat nginx.sh 
#!/bin/bash

if [ $UID -ne 0 ];then
        echo "Please use administrator account"
        exit
fi

app_a=nginx-1.20.1.tar.gz

dir_a=/usr/local
dir_b=/var/log
dir_c=nginx-1.20.1

if [ ! -d $dir_b/nginx ];then
        mkdir -p $dir_b/nginx
fi
chown -R nginx.nginx $dir_b/nginx

yum -y install pcre-devel openssl openssl-devel gd-devel GCc gcc-c++  make
yum -y groups mark install 'Development Tools'

id nginx &>/dev/null 
if [ $? -ne 0 ];then
        useradd -r -M -s /sbin/nologin nginx
fi

tar xf bag/$app_a -C $dir_a

cd  $dir_a/$dir_c
if [ ! -d $dir_a/nginx ];then
        ./configure \
                --prefix=$dir_a/nginx \
                --user=nginx \
                --group=nginx \
                --with-debug \
                --with-http_ssl_module \
                --with-http_realip_module \
                --with-http_image_filter_module \
                --with-http_gunzip_module \
                --with-http_gzip_static_module \
                --with-http_stub_status_module \
                --http-log-path=$dir_b/nginx/access.log \
                --error-log-path=$dir_b/nginx/error.log  && make  && make install
fi

cd ..
if [ ! -f /etc/profile.d/nginx.sh  ];then
        echo "export PATH=$dir_a/nginx/sbin:\$PATH" > /etc/profile.d/nginx.sh
fi

cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=Nginx server daemon
Wants=sshd-keygen.target

[Service]
Type=forking
ExecStart=$dir_a/nginx/sbin/nginx
ExecStop=$dir_a/nginx/sbin/nginx -s stop
ExecReload=/bin/kill -HUP $MaiNPID

[Install]
WantedBy=multi-user.target
EOF


systemctl daemon-reload
systemctl enable --now nginx

查看端口


[root@server1 ~]# ss -antl
State    Recv-Q   Send-Q       Local Address:Port                     Peer Address:Port                 
LISTEN   0        128                0.0.0.0:22                            0.0.0.0:*                    
LISTEN   0        128                0.0.0.0:80                            0.0.0.0:*                    
LISTEN   0        128                   [::]:22                               [::]:*   

访问页面

在这里插入图片描述

在server上部署lnmp

部署nginx


[root@server2 lnmp]# cat install.sh 
#!/bin/bash

if [ $UID -ne 0 ];then
        echo "Please use administrator account"
        exit
fi

app_a=nginx-1.20.1.tar.gz

dir_a=/usr/local
dir_b=/var/log
dir_c=nginx-1.20.1

if [ ! -d $dir_b/nginx ];then
        mkdir -p $dir_b/nginx
fi
chown -R nginx.nginx $dir_b/nginx

yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++  make
yum -y groups mark install 'Development Tools'

id nginx &>/dev/null 
if [ $? -ne 0 ];then
        useradd -r -M -s /sbin/nologin nginx
fi

tar xf bag/$app_a -C $dir_a

cd  $dir_a/$dir_c
if [ ! -d $dir_a/nginx ];then
        ./configure \
                --prefix=$dir_a/nginx \
                --user=nginx \
                --group=nginx \
                --with-debug \
                --with-http_ssl_module \
                --with-http_realip_module \
                --with-http_image_filter_module \
                --with-http_gunzip_module \
                --with-http_gzip_static_module \
                --with-http_stub_status_module \
                --http-log-path=$dir_b/nginx/access.log \
                --error-log-path=$dir_b/nginx/error.log  && make  && make install
fi

cd ..
if [ ! -f /etc/profile.d/nginx.sh  ];then
        echo "export PATH=$dir_a/nginx/sbin:\$PATH" > /etc/profile.d/nginx.sh
fi

cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=Nginx server daemon
Wants=sshd-keygen.target

[Service]
Type=forking
ExecStart=$dir_a/nginx/sbin/nginx
ExecStop=$dir_a/nginx/sbin/nginx -s stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now nginx

部署Mysql


[root@server2 lnmp]# cat mysql.sh 
#!/bin/bash

if [ $UID -ne 0 ];then
        echo "root?"
        exit
fi

dir_a=/usr/local
dir_b=/opt/data
app_a=mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
app_b=mysql-5.7.34-linux-glibc2.12-x86_64

id mysql  &>/dev/null
if [ $? -ne 0 ];then
        useradd -r -M -s /sbin/nologin mysql
 fi


yum -y install ncurses-compat-libs ncurses-devel openssl-devel openssl cmake mariadb-devel 


if [ ! -d $dir_a/$app_b ];then
        tar xf bag/$app_a -C $dir_a
fi

if [ ! -d $dir_a/mysql ];then
        ln -sv $dir_a/$app_b  $dir_a/mysql
fi
chown -R mysql:mysql $dir_a/mysql*

echo "export PATH=$dir_a/mysql/bin:\$PATH" > /etc/profile.d/mysql.sh

source /etc/profile.d/mysql.sh

if [ ! -d /$dir_b ];then
        mkdir -p /$dir_b 
        chown -R mysql.mysql /$dir_b
fi


content=$(ls $dir_b | wc -l)
if [ $content -eq 0  ];then
        mysqld --initialize-insecure --user mysql --datadir $dir_b
fi

cat > /etc/my.cnf <<EOF
[mysqld]
basedir = $dir_a/mysql    
datadir = $dir_b           
Socket = /tmp/mysql.sock      
port = 3306                   
pid-file = $dir_b/mysql.pid
user = mysql                  
skip-name-resolve
EOF



sed -ri "s#^(basedir=).*#\1$dir_a/mysql#g" $dir_a/mysql/support-files/mysql.server
sed -ri "s#^(datadir=).*#\1$dir_b#g" $dir_a/mysql/support-files/mysql.server


cat > /usr/lib/systemd/system/mysqld.service <<EOF
[Unit]
Description=mySQL Server daemon
After=network.target 

[Service]
Type=forking

ExecStart=$dir_a/mysql/support-files/mysql.server start
ExecStop=$dir_a/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
EOF

systemctl  daemon-reload
systemctl  enable --now  mysqld

部署PHP


 https://www.php.net/distributions/php-8.0.10.tar.xz

解压


[root@server2 ~]# tar -xf  php-8.0.10.tar.gz  -C /usr/local/

安装依赖包


[root@server2 ~]# wget http://mirrors.aliyun.com/repo/epel-7.repo
[root@server1 ~]# yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel  pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel  php-mysqlnd  libsqlite3x-devel libzip-devel
[root@server2 ~]# yum -y install http://mirror.Centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm

编译安装


[root@server2 ~]# cd /usr/local/php-8.0.10/
[root@server2 php-8.0.10]# ./configure --prefix=/usr/local/php8  --with-config-file-path=/etc --enable-fpm --disable-debug --disable-rpath --enable-shared --enable-soap --with-openssl --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --enable-exif  --enable-ftp --enable-gd --with-jpeg --with-zlib-dir --with-freetype --with-gettext --enable-mbstring --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-readline --enable-shmop --enable-simplexml --enable-sockets --with-zip --enable-mysqlnd-compression-support --with-pear --enable-pcntl --enable-posix
......
......
......
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands

+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE. By continuing this installation  |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.


[root@server2 php-8.0.10]# make
.......
.......
.......
invertedregexiterator.inc
pharcommand.inc
phar.inc

Build complete.
Don't forget to run 'make test'.

[root@server2 php-8.0.10]# make install
......
......
/root/php-8.0.10/build/shtool install -c ext/phar/phar.phar /usr/local/php8/bin/phar.phar
ln -s -f phar.phar /usr/local/php8/bin/phar
Installing PDO headers:           /usr/local/php8/include/php/ext/pdo/

配置php-fpm


[root@server2 php-8.0.10]# cp /etc/php.ini /opt/
[root@server2 php-8.0.10]# cp php.ini-production /etc/php.ini 
cp: overwrite '/etc/php.ini'? y
[root@server2 php-8.0.10]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@server2 php-8.0.10]# chmod +x /etc/init.d/php-fpm
[root@server2 php-8.0.10]# cd  ..
[root@server2 local]# cd  php8/
[root@server2 php8]# cd  etc/
[root@server2 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server2 etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf
[root@server2 etc]# cd  php-fpm.d
[root@server2 php-fpm.d]# ls
www.conf  www.conf.default

配置环境变量


[root@server2 ~]#  echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php.sh
[root@server2 ~]# cat /etc/profile.d/php.sh
export PATH=/usr/local/php8/bin:$PATH
[root@server2 ~]# source /etc/profile.d/php.sh
[root@server2 ~]# which php
/usr/local/php8/bin/php

编写service文件


[root@server2 ~]# cat /usr/lib/systemd/system/php-fpm.service 
[Unit]
Description=php-fpm server daemon
After=network.target 

[Service]
Type=forking

ExecStart=/etc/init.d/php-fpm start
ExecStop=/etc/init.d/php-fpm stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
[root@server2 ]# systemctl  daemon-reload

启动php


[root@server2 ~]# systemctl start php-fpm
[root@server2 ~]# ss -antl
State    Recv-Q   Send-Q       Local Address:Port                     Peer Address:Port                 
LISTEN   0        128              127.0.0.1:9000                          0.0.0.0:*                    
LISTEN   0        128                0.0.0.0:80                            0.0.0.0:*                    
LISTEN   0        128                0.0.0.0:22                            0.0.0.0:*                    
LISTEN   0        80                       *:3306                                *:*                    
LISTEN   0        128                   [::]:22                               [::]:*  

在nginx.conf里配置虚拟主机


[root@server2 ~]# cd  /usr/local/nginx/html/
[root@server2 html]# ls
50x.html  index.html
[root@server2 html]# vim index.php
[root@server2 html]# cat index.php 
<?php
    phpinfo();
?>
[root@server2 conf]# pwd
/usr/local/nginx/conf
[root@server2 conf]# vim  nginx.conf
........
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;

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



        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $Document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
[root@server2 conf]# nginx -s reload

访问

在这里插入图片描述

node3部署httpd


[root@node3 ~]# yum -y install httpd

启动


[root@node3 ~]# systemctl start httpd
[root@node3 ~]# ss -antl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128     *:22                  *:*                  
LISTEN     0      100    127.0.0.1:25                  *:*                  
LISTEN     0      128    :::80                 :::*                  
LISTEN     0      128    :::22                 :::*                  
LISTEN     0      100       ::1:25                 :::*                 

访问

在这里插入图片描述

实现分离部署

在server1上的nginx.conf上配置


[root@server1 ~]# cat /usr/local/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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;

    upstream cm {                #静态资源地址
        server 192.168.244.142;
    }
    
    upstream nm {                #动态资源地址
        server 192.168.244.133;
    }


    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://cm;     #指向静态
        }
        
        #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://nm;
        }

[root@server1 ~]# nginx -s reload

访问 192.168.244.131

在这里插入图片描述

在访问 192.168.244.131/index.php

在这里插入图片描述

到此这篇关于nginx实现动静分离的方法示例的文章就介绍到这了,更多相关nginx 动静分离内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: nginx实现动静分离的方法示例

本文链接: https://lsjlt.com/news/156203.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • nginx实现动静分离的方法示例
    目录在server1上部署nginx在server上部署lnmpnode3部署httpd实现分离部署本文主要介绍了nginx实现动静分离的方法示例,具有一定的学习价值,具体如下 环境...
    99+
    2024-04-02
  • nginx如何实现动静分离
    Nginx可以通过以下几种方法实现动静分离:1. 通过文件类型进行分离:在Nginx配置文件中,可以使用`location`指令来根...
    99+
    2023-10-09
    nginx
  • nginx动静分离怎么实现
    实现Nginx动静分离可以通过以下几个步骤:1. 安装Nginx:首先确保已经安装了Nginx,可以从官方网站下载并按照指引进行安装...
    99+
    2023-09-13
    nginx
  • 使用nginx实现动静分离
    本文为大家分享了使用nginx实现动静分离的具体内容,供大家参考,具体内容如下 一、什么是动静分离 动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接...
    99+
    2024-04-02
  • Nginx动静分离配置怎么实现
    本篇内容主要讲解“Nginx动静分离配置怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx动静分离配置怎么实现”吧!一、概述1.1 动态页面与静态页面区别静态资源: 当用户多次访问...
    99+
    2023-06-29
  • Nginx动静分离配置实现与说明
    一、概述 1.1 动态页面与静态页面区别 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。 1.2 ...
    99+
    2024-04-02
  • nginx负载均衡动静分离怎么实现
    要实现nginx的负载均衡和动静分离,可以按照以下步骤操作:1. 安装和配置nginx:首先,确保已在服务器上安装了nginx,然后...
    99+
    2023-09-07
    负载均衡 nginx
  • Nginx+Tomcat负载均衡及动静分离群集的实现
    目录Nginx配置反向代理的主要参数动静分离原理Nginx静态处理优势配置Nginx+Tomcat负载均衡,动静分离配置Nginx 负载均衡器部署两台Tomcat动静分离配置配置动态...
    99+
    2024-04-02
  • 服务器的负载均衡nginx+tomcat实现动静分离
    目录案例环境案例实施:部署tomcat服务器部署nginx服务器部署nginx-lb服务器本文实验内容nginx+tomcat实现网站的动静分离功能 案例环境 主机信息 架构图 ...
    99+
    2024-04-02
  • 利用nginx实现动静分离的负载均衡集群实战
    前言 大家好,我是沐风晓月,今天我们利用nginx来作为负载,实现两台apache服务器的动静分离集群实战; 本文收录于沐风晓月的专栏《linux基本功-系统服务实战》,更多内容可以关注我的博客: https://blog.csdn.net...
    99+
    2023-08-18
    服务器 运维 linux 原力计划
  • 使用Nginx+uWsgi实现Python的Django框架站点动静分离
    由于: Django处理静态文件不太友好; 以后有可能需要处理php或者其他资源的请求; 所以考虑结合nginx,使用nignx做它擅长的路由分发功能;同时做动静分离,即Http请求统一由Nginx进行分发...
    99+
    2022-06-04
    动静 框架 站点
  • 如何用nginx实现动静分离的负载均衡集群
    这篇文章主要介绍“如何用nginx实现动静分离的负载均衡集群”,在日常操作中,相信很多人在如何用nginx实现动静分离的负载均衡集群问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用nginx实现动静分离的...
    99+
    2023-07-05
  • 怎么用服务器的负载均衡nginx+tomcat实现动静分离
    这篇文章主要介绍“怎么用服务器的负载均衡nginx+tomcat实现动静分离”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用服务器的负载均衡nginx+tomcat实现动静分离”文章能帮助大家解...
    99+
    2023-06-29
  • es6中class类静态方法,静态属性,实例属性,实例方法的示例分析
    这篇文章主要为大家展示了“es6中class类静态方法,静态属性,实例属性,实例方法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“es6中class类...
    99+
    2024-04-02
  • JavaScript基础之静态方法和实例方法的示例分析
    小编给大家分享一下JavaScript基础之静态方法和实例方法的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!直接定义在...
    99+
    2024-04-02
  • Nginx负载均衡以及动静分离的原理与配置
    目录一、Nginx实现负载均衡原理二、Nginx动静分离原理Nginx 静态处理优势三、Nginx + Tomcat 动静分离、负载均衡配置步骤环境准备:动静分离配置Nginx 负载...
    99+
    2024-04-02
  • Sharding-JDBC自动实现MySQL读写分离的示例代码
    目录一、ShardingSphere和Sharding-JDBC概述1.1、ShardingSphere简介 1.2、Sharding-JDBC简介1.3、Sharding...
    99+
    2024-04-02
  • springboot结合mysql主从来实现读写分离的方法示例
    1.实现的功能     基于springboot框架,application.yml配置多个数据源,使用AOP以及AbstractRootingDat...
    99+
    2024-04-02
  • nginx代理实现静态资源访问的示例代码
    目录一. 目标:二. 实现效果:三. 具体配置1. nginx配置本地静态工程代理2. win10配置本地域名实现域名访问3.nginx配置页面预览路由一. 目标: 为了通过ngin...
    99+
    2024-04-02
  • SpringSecurity实现前后端分离的示例详解
    目录1. 认证信息改成JSON格式1.1 新建JsonUsernamePasswordAuthenticationFilter1.2 新建JsonUsernamePasswordLo...
    99+
    2023-03-14
    SpringSecurity前后端分离 SpringSecurity分离
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作