强大的WEB服务器-Nginx

简介: 强大的WEB服务器-Nginx

今天跟我一起折腾一下nginx服务器,首先简单介绍一下nginx服务器

NGINX官网

NGINX

nginx作为web服务器,可以使用反向代理、负载均衡、邮件代理;大多数使用nginx的场景是反向代理和负载均衡

背景介绍

vue+springboot项目

http转变https

有一个端口做转接,反向代理不同后段端口

完整的nginx.conf配置文件如下,添加注释的地方基本都需要根据自己的场景相对应的修改

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
    worker_connections 768;
    # multi_accept on;
}
http {
     # 关闭服务器版本信息
     server_tokens off;
    # 负载,此处做的不同服务器8081的负载
    upstream upserver {
       server tomcat1:8081;
       server tomcat2:8081;
    }
    ##
    # Basic Settings
    ##
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    ##
    # SSL Settings
    ##
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    ##
    # Gzip Settings
    ##
    gzip on;
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    server {
            listen 80;
            server_name 域名; 
            #此处做if判断,拦截所有非域名访问的url,返回403;此处配置方式是拦截所有url放行域名的配置方式之一
          if ($host != '域名'){
            return 403;
           }
            ssl on;
            root /www; 
            index index.nginx-debian.html index.html index.htm;
            ssl_certificate  test.com.pem;# 生成的ssl.pem
            ssl_certificate_key test.com.key;# 生成的ssl.key
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            location /{
                index index.html;
                try_files $uri $uri/ /index.html;
            }
    }
    server {
            listen 8230;
            server_name 域名;
            if ($host != '域名'){
                return 403;
            }
            # 开启ssl
            ssl on;
            root /www; 
            index index.nginx-debian.html index.html index.htm;
            ssl_certificate  test.com.pem; # ssl.pem
            ssl_certificate_key test.com.key;# ssl.pem
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            location /{
              index index.html;
              # 防止vue 项目history模式下刷新页面404
              try_files $uri $uri/ /index.html;
            }
            # 针对/ws url开头的做特殊处理
        location /ws {
            proxy_pass http://upserver;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Port $Server_port;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
            # 配置websocket使用的请求头
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
          }
          # 针对/api开头的url做特殊处理
          location /api {
            proxy_pass http://apiserver;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Port $Server_port;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
          }
    }
}


技术点

反向代理

location /ws {
            #反向代理地址 此处ddupserver是上方配置的负载均衡服务器
            proxy_pass http://upserver;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Port $Server_port;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
            # 配置websocket使用的请求头
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
          }

ssl证书

server节点中配置我们生成证书的路径,可以是绝对路径

ssl_certificate  test.com.pem; # ssl.pem
    ssl_certificate_key test.com.key;# ssl.pem

websocket链接nginx配置

# 配置websocket使用的请求头
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

websocket链接,https

前端链接websocket要使用wss:// 
不能使用ws://

vue项目history模式使用nginx部署404

vue官方解决方案

location /{
        index index.html;
        try_files $uri $uri/ /index.html;
    }


目录
相关文章
|
6月前
|
移动开发 数据挖掘 开发者
服务器发送事件(SSE)在现代Web开发中的关键作用
服务器发送事件(SSE)是HTML5标准协议,用于服务器主动向客户端推送实时数据,适合单向通信场景。相比WebSocket,SSE更简洁高效,基于HTTP协议,具备自动重连、事件驱动等特性。常见应用场景包括实时通知、新闻推送、数据分析等。通过Apipost等工具可轻松调试SSE,助力开发者构建高效实时Web应用。示例中,电商平台利用SSE实现秒杀活动通知,显著减少延迟并简化架构。掌握SSE技术,能大幅提升用户体验与开发效率。
|
4月前
|
存储 应用服务中间件 nginx
在使用Nginx之后,如何在web应用中获取用户IP以及相关原理
但总的来说,通过理解网络通信的基础知识,了解http协议以及nginx的工作方式,我们已经能在大多数情况下准确地获取用户的真实IP地址了,在调试问题或者记录日志时会起到很大的帮助。
247 37
|
6月前
|
Ubuntu 应用服务中间件 网络安全
Nginx伪流媒体服务器搭建详细说明以及案例
Nginx伪流媒体服务器搭建步骤如下:1. 安装Nginx,根据系统选择命令;2. 编辑配置文件(/etc/nginx/nginx.conf),添加mp4相关设置;3. 创建视频目录/usr/share/nginx/html/videos并上传视频;4. 重启Nginx应用更改;5. 通过浏览器访问视频,如http://your_server_ip/videos/example.mp4。注意启用mp4模块,确保视频格式支持伪流媒体播放。
212 7
|
7月前
|
应用服务中间件 PHP nginx
当你的nginx服务器和php服务器不在一起的时候,这个nginx 的root目录问题
两个服务器的网站代码目录需要对齐,docker容器里面也是一样
|
10月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
453 61
|
9月前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
620 9
|
9月前
|
存储 编解码 应用服务中间件
使用Nginx搭建流媒体服务器
本文介绍了流媒体服务器的特性及各种流媒体传输协议的适用场景,并详细阐述了使用 nginx-http-flv-module 扩展Nginx作为流媒体服务器的详细步骤,并提供了在VLC,flv.js,hls.js下的流媒体拉流播放示例。
1113 4
|
4月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
6月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
1119 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
6月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。

热门文章

最新文章