Nginx的常用操作

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: nginx在项目开发中担任着重要的角色,比如我们常说的负载均衡、动静分离、反向代理,都可以通过nginx来实现,那么今天我们就一起来看看nginx吧!
WangScaler: 一个用心创作的作者。

声明:才疏学浅,如有错误,恳请指正。

nginx在项目开发中担任着重要的角色,比如我们常说的负载均衡、动静分离、反向代理,都可以通过nginx来实现,那么今天我们就一起来看看nginx如何使用。

安装

安装方式有很多,我们选择最简单的yum来安装。

yum install nginx

启动

systemctl restart nginx.service

可以通过以下命令检查服务的状态

systemctl status nginx.service

也可以直接在浏览器访问http://IP来检查nginx的页面。默认的是80端口

如果你需要开机自启,可以使用命令

systemctl enable nginx.service

动静分离

我们开发过程中静态页面,是无需经过后端处理的,如果通过后端获取,白白浪费资源,可以通过nginx配置,直接通过nginx返回静态页面。

  server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html/wangscaler;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        error_page 404 /index.html;
        location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
​

通过yum安装的静态页面地址是/usr/share/nginx/html,你可以将你的静态页面放在这个文件夹下,比如我的项目就放在这个文件夹下的wangscaler文件夹下。通过在nginx的配置文件/etc/nginx/nginx.conf配置root选项即可。

负载均衡

像tornado是单线程的框架,主要通过epoll来处理任务,为了增强应用处理高并发的能力,给tornado项目进行负载均衡是非常不错的选择,你也可以在tornado官方文档里看到,tornado官方也是推荐使用nginx来做负载均衡的。

比如我们的项目部署在三台机器上。且后台接口的前缀是/wangscaler/v1

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html/wangscaler;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location /wangscaler/v1{
          proxy_pass http://WangScalerApi;
        }
        upstream WangScalerApi {
          least_conn;
          server 192.168.1.100:8888 weight=3;
          server 192.168.1.200:8888 weight=3;
          server 192.168.1.300:8888 weight=3;
        }
        error_page 404 /index.html;
        location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

可能你的服务器的配置不一样,像低配的服务器可以少分点权重,通过weight降低权限即可。当然nginx的权重策略有很多,感兴趣或者有其他需要的可以去查查资料。

tcp的负载均衡

我们的tcp、udp服务或者emqx服务等等,也可以使用nginx做负载均衡

stream {
    upstream WangScalerServer {
       #hash $remote_addr consistent;
       server 192.168.1.100:3333 max_fails=2 fail_timeout=30s weight=8;
       server 192.168.1.200:3333 max_fails=2 fail_timeout=30s weight=10;
       server 192.168.1.300:3333 max_fails=2 fail_timeout=30s weight=7;
      }
    server {
        listen       9999;
        proxy_pass WangScalerServer;
    }
}

打开hash $remote_addr consistent;,会使你相同IP的客户端连向同一台服务器。

加密

当我们部署我们的静态网站(博客),但是我们不希望别人直接访问,也可以加上密码。

mkdir /usr/local/wangscaler
​
yum install -y httpd-tools
​
htpasswd -bc /usr/local/wangscaler/htpasswd.users wangscaler password

通过htpasswd.users文件来配置密码。在nginx的配置文件配置。

location /wangscaler{
  auth_basic "wangscaler";
  auth_basic_user_file /usr/local/wangscaler/htpasswd.users;
  proxy_pass http://WangScalerApi;
}

原始IP透传

经过nginx负载之后,无论是我们的web服务还是tcp服务,得到的ip地址都是nginx所在机器的ip地址,但是我们的业务中往往需要原始的IP地址,比如日志的记载。那么原始IP怎么透传呢?

Web服务

location /wangscaler{
  proxy_pass http://WangScalerApi;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
    

给请求添加hear字段为X-Real-IP。

TCP服务

server {
        listen       9999;
        proxy_protocol on;
        proxy_pass WangScalerServer;
    }

只需要增加proxy_protocol on;,即可,当客户端连接的时候,nginx会向服务器发送携带原始IP的数据包。

总结

以上是最基本的操作,nginx还有很多强大的功能,感兴趣的话就去研究研究,今天就到这里,对了

events {
    worker_connections 1024;
    use epoll;
}

这里的worker_connections记得根据你的业务,适当调大哦。

来都来了,点个赞再走呗!

关注WangScaler,祝你升职、加薪、不提桶!

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
应用服务中间件 Linux nginx
Nginx-常用操作命令
nginx-常用操作命令 查看nginx 相关目录 rpm ql nginx 查看当前nginx占用端口 netstat -tlnp | grep nginx 查看当前nginx启动状态 ps aux | grep nginx 启停nginx ...
1739 0
|
监控 Ubuntu JavaScript
Ubuntu安装设置nginx和nohup常用操作
nginx安装 Ubuntu直接从常规源中安装 apt-get install nginx 安装的目录 配置文件:/etc/nginx/ 主程序文件:/usr/sbin/nginx Web默认目录:/usr/share/nginx/http/ 日志目录:/var/log/n...
1852 0
|
25天前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解
|
1月前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
255 0
|
1月前
|
应用服务中间件 Linux nginx
Jetson 环境安装(四):jetson nano配置ffmpeg和nginx(亲测)之编译错误汇总
这篇文章是关于在Jetson Nano上配置FFmpeg和Nginx时遇到的编译错误及其解决方案的汇总。
87 4
|
5天前
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
17天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
nginx配置反向代理404问题
|
12天前
|
应用服务中间件 网络安全 PHP
八个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
Nginx 是一个高效的 HTTP 服务器和反向代理,擅长处理静态资源、负载均衡和网关代理等任务。其配置主要通过 `nginx.conf` 文件完成,但复杂设置可能导致错误。本文介绍了几个开源的 Nginx 可视化配置系统,如 Nginx UI、VeryNginx、OpenPanel、Ajenti、Schenkd nginx-ui、EasyEngine、CapRover 和 NGINX Agent,帮助简化和安全地管理 Nginx 实例。
|
1月前
|
编解码 Ubuntu 应用服务中间件
Jetson 环境安装(三):jetson nano配置ffmpeg和nginx(亲测)
本文介绍了在NVIDIA Jetson Nano上配置FFmpeg和Nginx的步骤,包括安装、配置和自启动设置。
131 1
Jetson 环境安装(三):jetson nano配置ffmpeg和nginx(亲测)
|
22天前
|
缓存 负载均衡 应用服务中间件
Nginx配置
【10月更文挑战第22天】在实际配置 Nginx 时,需要根据具体的需求和环境进行调整和优化。同时,还需要注意配置文件的语法正确性和安全性。
38 7