Nginx安装和配置详解

news2025/2/24 13:33:57

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都是一样的了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

up主亲测,ToDesk/青椒云/顺网云这三款云电脑玩转AIGC场景

文章目录 1. 前言2. 云电脑性能分析3. 基础硬件数据3.1 硬件配置3.2 AI 评测跑分 4. 云电脑 AIGC 上手实测4.1 ToDesk4.1.1 AIGC 技术集成情况4.1.2 界面及功能4.1.3 项目部署4.1.4 黑神话悟空 AI 换脸4.1.6 AIGC 文生图体验 4.2 青椒云4.2.1 AIGC 技术集成情况4.2.2 界面及功能…

ARM架构-Cache的底层原理

在主存与处理器之间加入一个小容量的存储器保存 CPU 最近一段时间内的历史访问数据&#xff0c;将在 CPU 发起访问的时候优先提供数据快速访问&#xff0c;这个介于 CPU 与主存储器之间的小容量高速存储空间我们称之为 Cache&#xff0c;即高速缓存。Cache 作为处理器与主存之间…

Codeforces Round 991 (Div. 3) F. Maximum modulo equality(区间gcd模板)

思路&#xff1a;我们由题意可以知道我们只需要维护区间gcd即可&#xff0c;因为差分一下后&#xff0c;维护的差分数组的区间gcd即为原数组所要求的值 线段树维护 #include<bits/stdc.h>using namespace std;typedef long long ll; typedef pair<ll, ll>PII; co…

树与图深度优先遍历——acwing

题目一&#xff1a;树的重心 846. 树的重心 - AcWing题库 分析 采用暴力枚举&#xff0c;试探每个点&#xff0c;除去之后&#xff0c;连通分量最大值是多少&#xff0c; 各个点的最大值找最小的 因为可以通过 dfs 来得到 根u以下点数&#xff0c;以及可以求各分树的点数&am…

消息中间件-Kafka3-kafkaJavaClient小例

消息中间件-Kafka3-kafkaJavaClient小例 Kafak Java Client private static final String KAFKA_TOPIC "kafak-test";private static String bootstrapServers "localhost:9092";private static AdminClient client null;static {Properties config n…

团队管理中如何做好目标管理

团队管理中的目标管理是确保团队高效运行的核心要素之一。 在目标管理中&#xff0c;清晰的目标设定、合理的资源分配、实时的跟踪与反馈机制是成功的关键。首先&#xff0c;设定SMART目标&#xff08;具体、可衡量、可达成、相关性强、时间限定&#xff09;能够有效聚焦团队的…

【QT】一个简单的串口通信小工具(QSerialPort实现)

目录 0.简介 1.展示结果 1&#xff09;UI界面&#xff1a; 2&#xff09;SSCOM&#xff08;模拟下位机收发&#xff09;&#xff1a; 3&#xff09;VSPD虚拟串口驱动&#xff08;连接上位机和下位机的串口&#xff09;&#xff1a; 4&#xff09;实际收发消息效果及视频演…

灵途科技亮相2024世界传感器大会 分享光纤光源技术突破

12月1日至2日&#xff0c;2024世界传感器大会&#xff08;WSS&#xff09;在郑州国际会展中心隆重举办&#xff0c;泛自动驾驶领域光电感知专家灵途科技受邀参加“光纤传感器与激光雷达”分论坛&#xff0c;并在大会上带来《激光雷达用一体化光纤光源》专题演讲&#xff0c;同与…

12月第1周AI资讯

阅读时间:3-4min 更新时间:2024.12.2-2024.12.6 目录 OpenAI CEO Sam Altman 预告“12天OpenAI”系列活动 腾讯HunyuanVideo:130亿参数的开源视频生成模型 李飞飞的World Labs发布空间智能技术预览版 中科院联手腾讯打造“AI带货王”AnchorCrafter OpenAI CEO Sam Alt…

CentOS7.X 安装RustDesk自建服务器实现远程桌面控制

参照文章CentOS安装RustDesk自建服务器中间总有几个位置出错&#xff0c;经实践做个记录防止遗忘 一 环境&工具准备 1.1 阿里云轻量服务器、Centos7系统、目前最高1.1.11版本rustdesk-server-linux-amd64.zip 1.2 阿里云轻量服务器–安全组–开放端口&#xff1a;TCP(21…

图形开发基础之在WinForms中使用OpenTK.GLControl进行图形绘制

前言 GLControl 是 OpenTK 库中一个重要的控件&#xff0c;专门用于在 Windows Forms 应用程序中集成 OpenGL 图形渲染。通过 GLControl&#xff0c;可以轻松地将 OpenGL 的高性能图形绘制功能嵌入到传统的桌面应用程序中。 1. GLControl 的核心功能 OpenGL 渲染上下文&…

指标加权评价方法

文章目录 层次分析法&#xff08;Analytic Hierarchy Process, AHP&#xff09;熵权法原理计算方法 Technique for Order Preference by Similarity to Ideal Solution(TOPSIS, 优劣解距离法)原理计算方法 层次分析法&#xff08;Analytic Hierarchy Process, AHP&#xff09; …

git管理Unity项目的正确方式

git管理Unity项目的正确打开方式 前言&#xff1a;对于刚开始git进行unity项目管理的时候&#xff0c;我采取的方式是全部文件上传&#xff0c;文件数量太多以及上传太大&#xff0c;我尝试过一下几个方法&#xff1a; 利用git的LFS大文件进行传方式&#xff0c;可行但比较麻…

GitToolBox插件:让IntelliJ IDEA的Git操作如虎添翼

GitToolBox插件介绍 GitToolBox是一款针对IntelliJ IDEA的插件&#xff0c;旨在增强IDE内置的Git功能&#xff0c;使Git操作更加便捷和高效。无论是单独开发者还是团队中的一员&#xff0c;这个插件都能帮助更好地管理代码和协作流程。 功能特点 分支管理&#xff1a;GitToolBo…

Golang 八股(持续补充...)

目录 进程、线程、协程 Go语言——垃圾回收 GC的触发条件 GC调优 GMP调度和CSP模型 Groutine的切换时机 Goroutine调度原理 Goroutine的抢占式调度 Context结构原理 Context原理 Golang内存分配机制 竞态、内存逃逸 golang内存对齐机制 golang中new和make的区别&a…

记录blender学习过程中遇到的问题

物体发射的方向不对 被发射物体&#xff08;例如一棵树&#xff09;n键看旋转归0 切换正视图 将被发射物体的局部坐标的Z轴 指向 全局方向的X轴时 并且把粒子系统设置的物体旋转勾选上 方向就对了 做倒角发现有问题 检查缩放应用、面朝向、有没有重合点&#xff08;融合点&am…

[免费]基于Python的Django在线(生鲜)商城(电子商城)管理系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的基于Python的Django在线(生鲜)商城(电子商城)管理系统&#xff0c;分享下哈。 项目视频演示 【免费】基于Python的Django在线(生鲜)商城(电子商城)管理系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随…

Scala的正则表达式

应用场景 1.找到符合要求的子串 2.判断给的字符串是否符合要求 例如&#xff0c;在网站上注册用户&#xff0c;用户名的格式有要求&#xff01;

【Unity高级】如何动态调整物体透明度

本文介绍了如何设置及动态调整物体的透明度。 一、手动设置的方法 我们先来看下如何手动设置物体的透明度。 物体的透明与否是通过材质来设置的。只有我们把具有透明度的材质指给物体的渲染器&#xff08;Render&#xff09;&#xff0c;物体就被设置成相应的透明度了。 看一…

Java课程设计项目-servlet+jsp美食系统、菜品管理系统

文章目录 Java课程设计项目-servletjsp美食系统一、项目介绍二、技术介绍2.1 环境需要2.2 技术栈 环境需要三、功能实现3.1登录注册3.2首页菜品展示、轮播图3.3美食菜品分类、查询3.4作品动态、个人简介、菜品收藏3.5创建菜谱、添加步骤 四、系统代码展示4.1项目架构&#xff0…