Nginx安装和配置详解

1.Nginx的安装

1.1运行以下脚本安装

yum install yum-utils -y
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 查看所有可安装nginx版本
yum --showduplicates list available nginx
yum install nginx-1.24.0 -y
systemctl enable nginx

# 防火墙开启80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# reload防火墙
firewall-cmd --reload
# 查看当前开了哪些端口
firewall-cmd --list-all
# 启动nginx
systemctl start nginx
# 查看是否开机启动
systemctl is-enabled nginx

默认需要开启80端口,访问服务器IP,看到Nginx欢迎界面,就说明安装成功了

1.2yum安装的各常用文件位置如下:

  • nginx的配置文件在/etc/nginx/nginx.conf
  • 自定义的配置文件放在/etc/nginx/conf.d
  • 项目文件存放在/usr/share/nginx/html/
  • 日志文件存放在/var/log/nginx/

1.3Nginx常用命令

nginx -s stop       快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit       平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload     因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen     重新打开日志文件。
nginx -c filename   为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t            不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v            显示 nginx 的版本。
nginx -V            显示 nginx 的版本,编译器版本和配置参数。

2.Nginx配置参数详解

nginx默认的配置文件在/etc/nginx/nginx.conf

2.1全局块

user  nginx; # 用户
worker_processes  auto; # 并发数

error_log  /var/log/nginx/error.log notice; # 错误日志存放位置
pid        /var/run/nginx.pid; # 进程存放目录

2.2events块

最大连接数就是worker_processes和connections的乘积

events {
    worker_connections  1024;  # 最大连接数
}

2.3http块

http块是最常使用的块,基本上所有的相关配置都是在http块中设置

  • 全局块

    http {
        include       /etc/nginx/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  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
       # include /etc/nginx/conf.d/*.conf; 导入配置,导入conf.d中的所有server配置
    }
    
  • server块

    在比较新的版本的nginx中,修改server配置一般在/etc/nginx/conf.d/中,不太修改主默认配置文件。

        server {
            listen 80;
            server_name localhost;
    
            location / {
                proxy_pass http://backend;
            }
        }
    
    

3.具体配置示例

3.1虚拟主机

也就是在一台主机中模拟出两个虚拟主机,根据域名不同,可以转发到不同的服务,例如

  [root@node7 conf.d]# vim /etc/nginx/conf.d/a.conf
  
    server {
       listen  80;
       server_name www.kayotin.com;
       location / {
           root /mnt;
           autoindex on;
       }
    }
    server {
        listen 80;
        server_name www.hanayo.com;
        location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        }
     }

配置完成后重启nginx,并且在host中添加一条记录

192.168.32.17	www.kayotin.com www.hanayo.com

然后用浏览器访问,就可以看到结果。虽然访问的同一台服务器,但是转发到了2个不同的虚拟主机上

3.2访问日志

默认的日志在/var/log/nginx/access.log,nginx默认以如下格式记录访问日志。当然了,日志的格式我们也可以自定义,所以nginx可以用来记录访问日志。

    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  /var/log/nginx/access.log  main;

3.2location设置

所谓location设置,也就是根据域名/后面加的具体路径,转发到具体服务上。以下例子将www.hanayo.com/my转发到192.168.32.16。

 [root@node7 conf.d]# vim /etc/nginx/conf.d/b.conf    
    server {
        listen 80;
        server_name www.hanayo.com;
        location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        }
        location /my {
        proxy_pass http://192.168.32.16/;
        }
     }

这台服务器上安装了httpd服务,运行了示例页面。

vim /var/www/html/index.html
hello,这里是192.168.32.16

此时进行访问,就得到如下结果

在这里插入图片描述

3.3负载均衡设置

简单来说负载均衡设置就是把来自客户端的请求,分别转发到指定的多台服务上,以此来缓解服务器的压力。

   [root@node7 conf.d]# vim /etc/nginx/conf.d/c.conf
    
   upstream rss{
        server 192.168.32.16;
        server 192.168.32.18;
    }
    server {
       listen  80;
       server_name www.hanayo.com;
       location / {
           root /mnt;
           autoindex on;
       }
       location /toms {
           proxy_pass http://rss/;
       }

在这个例子中,我们将的请求,均衡转发到16和18这两天服务器上,18上同样用httpd运行了一个简单的静态页面

vim /var/www/html/index.html
hello,这里是192.168.32.18

接下来我们访问http://www.hanayo.com/toms,就会发现会依次访问16和18,这样就实现了负载均衡。

3.4session共享

在访问网页时,本地会存储一些cookie。当使用负载均衡时,访问的服务器可能并不是同一台,这时候就产生了session共享的问题。

此步骤需要安装java环境,版本如下

https://repo.huaweicloud.com/java/jdk/7u80-b15/
jdk-7u80-linux-x64.rpm

java安装过程:

rpm -ivh jdk-7u80-linux-x64.rpm
find / -name '*java*'
# 可以看到默认安装在/usr/java/jdk1.7.0_80/
# 在 /etc/profile 文件中添加 JAVA_HOME 和 PATH 环境变量
echo 'export JAVA_HOME=/usr/java/jdk1.7.0_80' >> /etc/profile
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile

# 使环境变量生效
source /etc/profile
# 以下用来验证安装
[root@node8 ~]# jps
10874 Jps

Tomcat7.0.69

tar -xzf apache-tomcat-7.0.69.tar.gz -C /opt/tomcat/ --strip-components 1

安装后修改jsp文件

vim /opt/tomcat/webapps/ROOT/index.jsp
------------可以用dG快捷键,全删除,改成下面这样
from 192.168.32.16 session=<%=session.getId()%>

以上配置需要在16和18上都进行。配置完后,可以使用/opt/tomcat/bin/start.sh进行启动。

启动后我们直接访问16或者18的8080端口,可以看到sessionID

在这里插入图片描述

然后回到17上,将nginx配置修改为

   upstream rss{
        server 192.168.32.16:8080;
        server 192.168.32.18:8080;
    }
    server {
       listen  80;
       server_name www.hanayo.com;
       location / {
           root /mnt;
           autoindex on;
       }
       location /toms {
           proxy_pass http://rss/;
       }

此时访问http://www.hanayo.com/toms 就可以看到每次的sessionID不一样。

# 如果出现502,可能是SElinux权限没开,运行以下语句即可
setsebool -P httpd_can_network_connect 1

我们需要在nginx(在本例是17)上安装memecache

yum install libevent -y
yum install memcached  -y
# 当前nginx服务器ip
memcached -d -m 128m -p 11211 -l 192.168.32.17 -u root -P /opt/mempid
pgrep memcached

拷贝jar包到tomcat的lib目录下,文件可以在我的仓库下载:
然后在/tomcat/conf/context.xml添加如下配置

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
	memcachedNodes="n1:192.168.32.17:11211" 
    sticky="false" 
    lockingMode="auto"
    sessionBackupAsync="false"
	requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
/>

然后重启tomacat

./shutdown.sh && ./startup.sh

此时再访问http://www.hanayo.com/toms,就可以看到每次的sessionID都是一样的了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/934168.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytest测试框架

Pytest测试框架 测试用例发现规则 默认从当前或者指定文件夹下递归查找文件名以test_开头或者_test结尾的.py文件以Test 开头且&#xff08;不继承自 unittest.TestCase或者含有init方法的类&#xff09;的类函数名以 test_ 开头的测试用例方法 自定义测试用例发现规则 我们…

【OpenCV】图像阈值

简单阈值法 此方法是直截了当的。如果像素值大于阈值&#xff0c;则会被赋为一个值&#xff08;可能为白色&#xff09;&#xff0c;否则会赋为另一个值&#xff08;可能为黑色&#xff09;。使用的函数是 cv.threshold。第一个参数是源图像&#xff0c;它应该是灰度图像。第二…

idea压缩js,css

这是需要的jar包(文章顶部也可以下载) 地址:https://download.csdn.net/download/yuzheh521/90109966?spm1001.2101.3001.9500 压缩js arguments: -jar E:\swj\jar_packages\css_js_compress\yuicompressor-2.4.8.jar --type js --charset utf-8 $FilePath$ -o $FileNameWith…

css基础记录

基础 选择器 复合选择器 后代选择器 div p {}; 类似如上,找到div中所有的后代,注意是所有的后代 子代选择器 > div > a 只选择div的儿子中有a的 并集选择器 用逗号,分隔 p,div,span,h1 { … } 一般一行写一个 CSS元素显示模式 分为块元素,行内元素 块元素 特点…

【C++】LeetCode:LCR 078. 合并 K 个升序链表

题干&#xff1a; 给定一个链表数组&#xff0c;每个链表都已经按升序排列。 请将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 解法&#xff1a;优先队列 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *ne…

使用PHPUnit使用本地调试代替远程调试,快速提高开发效率

Laravel 是一个在 Linux 环境下表现非常出色的 PHP 框架&#xff0c;但它在 Windows 环境下可能会遇到一些兼容性和配置问题。为了调试或没试的方便可以在 Windows 环境下进行 Laravel PHPUnit进行本地调试和测试。 本地主要针对断点调试效果非常高效。 在 Laravel 中&#x…

【模型对比】ChatGPT vs Kimi vs 文心一言那个更好用?数据详细解析,找出最适合你的AI辅助工具!

在这个人工智能迅猛发展的时代&#xff0c;AI聊天助手已经深入我们的工作与生活。你是否曾在选择使用ChatGPT、Kimi或是百度的文心一言时感到一头雾水&#xff1f;每款AI都有其独特的魅力与优势&#xff0c;那么&#xff0c;究竟哪一款AI聊天助手最适合你呢&#xff1f;本文将带…

Spring Boot 性能提升的核武器,速度提升 500%!

虚拟线程是 Java 21 引入的一个新特性&#xff0c;用于简化并发编程。它与传统的操作系统线程相比&#xff0c;具有显著的优势&#xff1a; 轻量级&#xff1a;虚拟线程由 JVM 管理&#xff0c;而非操作系统&#xff0c;因此它们的内存占用和创建成本远低于传统线程。理论上&am…

Ubuntu下的gpt-sovits学习记录1:安装与测试

GitCode - 全球开发者的开源社区,开源代码托管平台 国内镜像点。 下载压包&#xff1a; 解压到没有中文名的文件夹内。如我 1.创建虚拟环境 conda create -n GPTSoVits python3.9 2.新建工程 3.部分环境 pip install -r requirements.txt 4.模型下载。建议直接下载上边的…

二叉树节点相关算法题|双分支节点个数|所有左叶子之和|每一层节点平均值(C)

双分支节点个数 假设二叉树采用二叉链表存储结构存储&#xff0c;试设计一个算法&#xff0c;计算一棵给定二叉树的所有双分支节点个数 算法思想 计算一棵二叉树中所有双分支节点个数的递归模型 若树为空&#xff0c;结果为0 若当前节点为双分支节点&#xff0c;递归左右孩子…

MySQL:表的内置函数

目录 一. 日期函数 二. 字符串函数 三. 数学函数​编辑 四. 其他函数 此篇博客讲解MySQL中关于表的内置函数。内置函数广泛用于数据库查询语句中。 一. 日期函数 例子一&#xff1a;创建一个样例表&#xff1a; 类似于隐式转换&#xff0c;虽然这样可以但是不建议。 …

Vue框架入门

Author&#xff1a;Dawn_T17?? 目录 什么是框架 一.Vue 的使用方向 二.Vue 框架的使用场景 &#xff08;TIP&#xff09;MVVM思想 三.Vue入门案例 TIP&#xff1a;插值表达式 四.Vue-指令? &#xff08;1&#xff09;v-bind 和 v-model? ? &#xff08;2&#x…

【OpenCV】图像转换

理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像&#xff0c;使用 2D离散傅里叶变换&#xff08;DFT&#xff09; 查找频域。快速算法称为 快速傅立叶变换&#xff08;FFT&#xff09; 用于计算DFT。 Numpy中的傅立叶变换 首先&#xff0c;我们将看到如何使用Numpy查…

Nanolog起步笔记-10-log解压过程(4)寻找meta续2

Nanolog起步笔记-10-log解压过程4寻找meta续2 写在前面重新开始trace 写在前面 前面的工作&#xff0c;已做打下令人有信心的基础。 重新开始trace 之前我们起步就看到了 metadata &#xff0c;显然这前就已加载了。 所以&#xff0c;只需要重走一遍代码&#xff0c;就能得到…

Vue3+Node中使用webrtc推流至mediamtx

前言 项目的 Web 端是 Vue3 框架&#xff0c;后端是 GO 框架。需要实现将客户端的本地摄像头媒体流推送至服务端&#xff0c;而我自己从未有媒体流相关经验&#xff0c;最初 leader 让我尝试通过 RTSP 协议推拉流&#xff0c;我的思路就局限在了 RTSP 方向。 最初使用的服务端…

小程序IOS安全区域优化:safe-area-inset-bottom

ios下边有一个小黑线&#xff0c;位于底部的元素会被黑线阻挡 safe-area-inset-bottom 一 用法及作用&#xff1a; IOS全面屏底部有小黑线&#xff0c;位于底部的元素会被黑线阻挡&#xff0c;可以使用以下样式&#xff1a; .model{padding-bottom: constant(safe-area-ins…

NVR小程序接入平台EasyNVR国标协议接入无告警是什么原因?

在现代视频监控系统中&#xff0c;国标接入已成为一种重要的技术标准&#xff0c;尤其是在GB28181协议的推动下&#xff0c;这一标准被广泛应用于安防设备的统一接入和管理。国标接入不仅提高了设备间的互联互通能力&#xff0c;还为用户提供了更高效、更智能的视频监控解决方案…

在CSDN设置“关注博主即可阅读全文”

我们在平时CSDN上搜索文章&#xff0c;打开文章&#xff0c;需要关注博主方可继续阅读的&#xff0c;相必有人会很困惑&#xff0c;也有人会觉得很烦。一般选择先关注&#xff0c;看完取消关注&#xff0c;不管怎么说&#xff0c;今天我来教大家如何设置“关注博主即可阅读全文…

《AI行政管理:开启高效治理新时代》

一、引言 AI 行政管理能力的定义和重要性 AI 行政管理能力是指人工智能在行政管理领域的应用能力。它涵盖了多个方面&#xff0c;包括政府决策支持、公共服务优化、行政流程自动化、社会治理与公共安全以及政府内部管理等。在当今时代&#xff0c;AI 行政管理能力具有至关重要…

`yarn list --pattern element-ui` 是一个 Yarn 命令,用于列出项目中符合指定模式(`element-ui`)的依赖包信息

文章目录 命令解析&#xff1a;功能说明&#xff1a;示例输出&#xff1a;使用场景&#xff1a; yarn list --pattern element-ui 是一个 Yarn 命令&#xff0c;用于列出项目中符合指定模式&#xff08; element-ui&#xff09;的依赖包信息。 命令解析&#xff1a; yarn list…