当前位置: 首页 > article >正文

Nginx1.20.2-Linux-安装

文章目录

    • 1.下载压缩包
        • 1.官网下载
        • 2.找到1.20.2
        • 3.百度网盘
    • 2.Linux安装
        • 1.搭建gcc环境
        • 2.上传到 /usr/local/nginx1.20.2
        • 3.解压
          • 1.解压到当前目录
          • 2.删除压缩包
        • 4.配置Nginx的编译路径
          • 1.进入nginx-1.20.2
          • 2.执行内部的脚本,指定编译路径为/usr/local/nginx
        • 5.编译并安装
        • 6.删除 /usr/local/nginx1.20.2 (因为已经编译完成了,所以就没用了)
        • 7.进入/usr/local/nginx输入./sbin/nginx -t,测试nginx是否正常
        • 8.指定配置文件启动Nginx
          • 1.启动
          • 2.查看Nginx进程
          • 3.开启80端口
            • 1.服务器开启
            • 2.安全组开启
          • 4.访问
        • 9.Nginx 配置文件详解
    • 3.Nginx案例:部署前端静态页面
        • 1.编写一个html文件
        • 2.**配置 Nginx**
          • 1.编辑配置文件
          • 2.新增一个server(这样就相当于http://localhost:9091/下面部署了一个/usr/local/nginx/html/test.html)
          • 3.检查配置文件格式
          • 4.重启Nginx,使配置生效
        • 3.编写 /usr/local/nginx/html/test.html
        • 4.开放9091端口,测试访问
          • 1.服务器开放
          • 2.安全组开放
          • 3.测试访问,成功!!!

1.下载压缩包

1.官网下载

https://nginx.org/en/download.html

2.找到1.20.2

CleanShot 2024-11-18 at 19.07.46@2x

3.百度网盘

CleanShot 2024-11-18 at 19.12.28@2x

2.Linux安装

1.搭建gcc环境
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

2.上传到 /usr/local/nginx1.20.2
mkdir /usr/local/nginx1.20.2
cd /usr/local/nginx1.20.2

CleanShot 2024-11-18 at 19.18.01@2x

3.解压
1.解压到当前目录
tar -zxvf nginx-1.20.2.tar.gz 
2.删除压缩包
rm -f nginx-1.20.2.tar.gz 
4.配置Nginx的编译路径
1.进入nginx-1.20.2
cd nginx-1.20.2/
2.执行内部的脚本,指定编译路径为/usr/local/nginx
./configure --prefix=/usr/local/nginx

CleanShot 2024-11-18 at 19.27.48@2x

5.编译并安装
make & make install

CleanShot 2024-11-18 at 19.31.12@2x

6.删除 /usr/local/nginx1.20.2 (因为已经编译完成了,所以就没用了)
rm -rf /usr/local/nginx1.20.2
7.进入/usr/local/nginx输入./sbin/nginx -t,测试nginx是否正常
cd /usr/local/nginx
./sbin/nginx -t

CleanShot 2024-11-18 at 19.40.53@2x

8.指定配置文件启动Nginx
1.启动
./sbin/nginx -c conf/nginx.conf
2.查看Nginx进程

CleanShot 2024-11-18 at 19.44.33@2x

3.开启80端口
1.服务器开启
systemctl start firewalld && firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload && firewall-cmd --query-port=80/tcp
2.安全组开启

CleanShot 2024-11-18 at 19.48.39@2x

4.访问
http://152.136.40.209:80

CleanShot 2024-11-18 at 19.49.11@2x

9.Nginx 配置文件详解
#Nginx用户及组:用户 组。window下不指定
#user  nobody;
 
#工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。
worker_processes  1;
 
#错误日志:存放路径。
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid(进程标识符):存放路径
pid       /usr/local/nginx/logs/nginx.pid;
 
#一个进程能打开的文件描述符最大值,理论上该值因该是最多能打开的文件数除以进程数。
#但是由于nginx负载并不是完全均衡的,所以这个值最好等于最多能打开的文件数。
#LINUX系统可以执行 sysctl -a | grep fs.file 可以看到linux文件描述符。
worker_rlimit_nofile 65535;
 
 
events {
    #使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
    use epoll;
    
    #单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections  1024;
    
    #客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,
    #一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。
    #client_header_buffer_size 4k;
}
 
 
http {
    #设定mime类型,类型由mime.type文件定义
    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"';
    
        
    #用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径
    #记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息
    #access_log  logs/host.access.log  main;
    #access_log  logs/host.access.404.log  log404;
    
    #服务器名字的hash表大小
    server_names_hash_bucket_size 128;
    
    #客户端请求头缓冲大小。
    #nginx默认会用client_header_buffer_size这个buffer来读取header值,
    #如果header过大,它会使用large_client_header_buffers来读取。
    #如果设置过小HTTP头/Cookie过大 会报400 错误 nginx 400 bad request
    #如果超过buffer,就会报HTTP 414错误(URI Too Long)
    #nginx接受最长的HTTP头部大小必须比其中一个buffer大
    #否则就会报400的HTTP错误(Bad Request)
    #client_header_buffer_size 32k;
    #large_client_header_buffers 4 32k;
    
    
    #隐藏ngnix版本号
    #server_tokens off;
    
    #忽略不合法的请求头
    #ignore_invalid_headers   on;
    
    #让 nginx 在处理自己内部重定向时不默认使用  server_name设置中的第一个域名
    #server_name_in_redirect off;
    
    
    #客户端请求体的大小
    #client_body_buffer_size    8m;
   
  
    #开启文件传输,一般应用都应设置为on;若是有下载的应用,则可以设置成off来平衡网络I/O和磁盘的I/O来降低系统负载
    sendfile        on;
    
    
    #告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送。
    #tcp_nopush     on;
    
    #tcp_nodelay off 会增加通信的延时,但是会提高带宽利用率。在高延时、数据量大的通信场景中应该会有不错的效果
    #tcp_nodelay on,会增加小包的数量,但是可以提高响应速度。在及时性高的通信场景中应该会有不错的效果
    tcp_nodelay on;
    
 
    #长连接超时时间,单位是秒
    keepalive_timeout  65;
 
    #gzip模块设置,使用 gzip 压缩可以降低网站带宽消耗,同时提升访问速度。
    #gzip  on;                     #开启gzip
    #gzip_min_length  1k;          #最小压缩大小
    #gzip_buffers     4 16k;       #压缩缓冲区
    #gzip_http_version 1.0;        #压缩版本
    #gzip_comp_level 2;            #压缩等级
    #gzip_types   text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;#压缩类型
    
    
    
    
    #负载均衡
    #max_fails为允许请求失败的次数,默认为1
    #weight为轮询权重,根据不同的权重分配可以用来平衡服务器的访问率。
    # upstream myServer{
    #   server  192.168.247.129:8080 max_fails=3 weight=2;
    #   server  192.168.247.129:8081 max_fails=3 weight=4;  
    # }
    
    
    
    #server {
    #    listen       80;
    #   
    #   #IP/域名可以有多个,用空格隔开
    #   server_name  192.168.247.129;
    #   #server_name  www.test.com;
    #
    #    #charset koi8-r;
    #
    #    #access_log  logs/host.access.log  main;
    #   
    #   #反向代理配置,
    #   #将所有请求为www.test.com的请求全部转发到upstream中定义的目标服务器中。
    #   location / {
    #               
    #       #此处配置的域名必须与upstream的域名一致,才能转发。
    #       proxy_pass http://myServer;
    #       #proxy_pass http://192.168.247.129:8080;
    #       
    #        proxy_connect_timeout 20;          #nginx跟后端服务器连接超时时间(代理连接超时)
    #       
    #        #client_max_body_size       10m;   #允许客户端请求的最大单文件字节数
    #        #client_body_buffer_size    128k;  #缓冲区代理缓冲用户端请求的最大字节数
    #        #proxy_send_timeout         300;   #后端服务器数据回传时间(代理发送超时)
    #        #proxy_read_timeout         300;   #连接成功后,后端服务器响应时间(代理接收超时)
    #        #proxy_buffer_size          4k;    #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    #        #proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
    #        #proxy_busy_buffers_size    64k;   #高负荷下缓冲大小(proxy_buffers*2)
    #        #proxy_temp_file_write_size 64k;   #设定缓存文件夹大小,大于这个值,将从upstream服务器传         
    #       
    #       root   html;
    #       
    #       #定义首页索引文件的名称
    #       index  index.html index.htm;
    #    }
    #
    #   #动静分离 静态资源走linux 动态资源走tomcat
    #   # 注意 /source/image/下面寻找资源
    #   location /image/ {
    #       root /source/;
    #       autoindex on;
    #   }       
    #
    #
    #    # 出现50x错误时,使用/50x.html页返回给客户端
    #    error_page   500 502 503 504  /50x.html;
    #    location = /50x.html {
    #        root   html;
    #    }
    #}
        
        
        
    #下面是配置生产环境中既支持HTTP又支持HTTPS,保证用户在浏览器中输入HTTP也能正常访问
    
    # SSL证书 配置                                 
    ssl_certificate         cert/yphtoy.com.pem;   #加密证书路径
    ssl_certificate_key cert/yphtoy.com.key;       #加密私钥路径
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;     #加密协议
    ssl_session_cache   shared:SSL:1m;             #加密访问缓存设置,可以大大提高访问速度
    ssl_session_timeout 10m;                       #加密访问缓存过期时间
    ssl_ciphers     HIGH:!aNULL:!MD5;              #加密算法
    ssl_prefer_server_ciphers on;                  #是否由服务器决定采用哪种加密算法
    
    # 负载均衡
    upstream api_upstream
    {
        server 127.0.0.1:8080 max_fails=3 weight=1;
        server 127.0.0.1:8081 max_fails=3 weight=1;
    }
    
    #api 接口(兼容HTTP)
    server{
        listen 80;
        server_name api.test.com;
        # 301重定向跳转到HTTPS接口
        return 301 https://$server_name$request_uri;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
    #api 接口(兼容HTTPS)
    server{
        listen 443 ssl;
        server_name api.test.com;
        location / {
           root html;
           index  index.html index.htm;
           proxy_pass http://api_upstream;
           
           #语法: proxy_cookie_path oldpath replacepath;
           #oldpath就是你要替换的路径 replacepath 就是要替换的值
           #作用:同一个web服务器下面多个应用之间能获取到cookie
           proxy_cookie_path /api/ /;
           
           #服务端接收的请求头Cooke值不变
           proxy_set_header Cookie $http_cookie;
        }
    }
    
    #管理后台端(兼容HTTP)
    server{
        listen 80;
        server_name manage.test.com;
        # 301重定向跳转到HTTPS接口
        return 301 https://$server_name/$request_uri;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html{
             root html  
        }
    }
    
    #管理后台端(兼容HTTPS)
    server{
        listen 443 ssl;
        server_name manage.test.com;
        location / {
            root /home/test/web/dist
            
            index /index.html;
            
            
            #语法:try_files 【$uri】 【 $uri/】 【参数】
            #当用户请求https://manage.test.com/login时,
            #一.如果配置了上面的默认index,会依次请求
            #1./home/test/web/dist/login       查找有没有login这个文件,没有的话
            #2./home/test/web/dist/index.html  有就直接返回
            
            #二.如果没有配置了上面的默认index或者配置了没有找到对应的资源,会依次请求
            #1./home/test/web/dist/login        查找有没有login这个文件,没有的话
            #2./home/test/web/dist/login/       查找有没有login这个目录,没有的话
            #3.请求https://manage.test.com/index.html  nginx内部做了一个子请求
            
            #三.总的来说,index的优先级比try_files高,请求会先去找index配置,这里最后一个参数必须存在
            try_files $uri $uri/ /index.html;   
            
            
            
            #解决跨域问题
            #允许跨域请求地址(*表示全部,但是无法满足带cookie请求,因为cookie只能在当前域请求)
            add_header Access-Control-Allow-Origin $http_origin;
            #允许接收cookie和发送cookie
            add_header Access-Control-Allow-Credentials 'true';
            #允许请求的方法
            add_header Access-Control-Allow-Methods 'GET,POST,DELETE,PUT,OPTIONS';
            #允许请求头(Content-Type:请求数据/媒体类型 x-requested-with:判断请求是异步还是同步 自定义header 比如 token)
            add_header Access-Control-Allow-Headers $http_access_control_request_headers;
            #浏览器缓存请求头信息,1800秒内,只会有1次请求,不会出现"OPTIONS"预请求,节约资源
            #add_header Access-Control-Max-Age '1800';
            if ($request_method = 'OPTIONS') {
                    return 204;
            }
            
            
            #服务端HttpServletRequest可以获得用户的真实ip
            proxy_set_header X-Real-IP $remote_addr;
            
            #服务端HttpServletRequest可以获得用户的真实ip和经过的每一层代理服务器的ip
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
            #服务端接收的请求头Host值不变
            proxy_set_header Host  $http_host;
            
            proxy_set_header X-Nginx-Proxy true;
        }
    } 
}

3.Nginx案例:部署前端静态页面

1.编写一个html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My Nginx Test</title>
</head>
<body>
    <h1>Welcome to Nginx on localhost:9091!</h1>
</body>
</html>
2.配置 Nginx
1.编辑配置文件
vim /usr/local/nginx/conf/nginx.conf
2.新增一个server(这样就相当于http://localhost:9091/下面部署了一个/usr/local/nginx/html/test.html)
    server {
        listen 9091;
        server_name localhost;

        location / {
            root /usr/local/nginx/html;    # 静态文件根目录
            index test.html;               # 默认首页文件
            try_files $uri /test.html;     # 如果访问的文件不存在,加载 test.html
        }

        error_page 404 /404.html;          # 可选:配置404页面
    }

CleanShot 2024-11-18 at 20.11.46@2x

3.检查配置文件格式
/usr/local/nginx/sbin/nginx -t

CleanShot 2024-11-18 at 20.12.33@2x

4.重启Nginx,使配置生效
/usr/local/nginx/sbin/nginx -s reload
3.编写 /usr/local/nginx/html/test.html
vim /usr/local/nginx/html/test.html

CleanShot 2024-11-18 at 20.15.03@2x

4.开放9091端口,测试访问
1.服务器开放
systemctl start firewalld && firewall-cmd --permanent --add-port=9091/tcp && firewall-cmd --reload && firewall-cmd --query-port=9091/tcp

CleanShot 2024-11-18 at 20.15.58@2x

2.安全组开放

CleanShot 2024-11-18 at 20.17.01@2x

3.测试访问,成功!!!

http://152.136.40.209:9091/

CleanShot 2024-11-18 at 20.17.40@2x


http://www.kler.cn/a/460418.html

相关文章:

  • Dell服务器升级ubuntu 22.04失败解决
  • 《机器学习》从入门到实战——逻辑回归
  • C语言链表通关文牒0.5
  • 浅谈下Spring MVC的执行流程
  • NestJS 性能优化:从应用到部署的最佳实践
  • latex 尖括号怎么写 编译出来是问号
  • Jenkins 使用入门教程
  • 聊天机器人Rasa面试内容整理-Rasa 是什么?
  • VR动感单车身心调适系统产品特点
  • YK人工智能(三)——万字长文学会torch深度学习
  • vue3中开发一个不定高的虚拟滚动组件
  • SpringBoot + Thymeleaf + Bootstrap5 整合 MyBatis-Plus 和 MySQL 实现动态分类标签渲染教程
  • 郑州时空-TMS运输管理系统 GetDataBase 信息泄露漏洞复现
  • 深信服云桌面系统的终端安全准入设置
  • JavaWeb开发(三)Servlet技术-手动、自动创建Servlet
  • Elasticsearch-搜索推荐:Suggest
  • 记一次 .NET某汗液测试机系统 崩溃分析
  • HTML5 开关(Toggle Switch)详细讲解
  • 如何将联系人从 iPhone 转移到华为 [4 种方法]
  • 【SQLi_Labs】Basic Challenges
  • 网络游戏之害
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之9 重新开始 之2
  • 半导体数据分析: 玩转WM-811K Wafermap 数据集(一) AI 机器学习
  • 机器学习DAY9:聚类(K-means、近邻传播算法、谱聚类、凝聚聚类、兰德指数、调整互信息、V−mearure、轮廓系数)
  • Python爬虫入门实例:Python7个爬虫小案例(附源码)
  • 解锁节日季应用广告变现潜力,提升应用广告收入