nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)

下面将为您详细讲解“nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)”的完整攻略。

安装Nginx

首先,我们需要到官网(http://nginx.org/)下载最新的Nginx安装包,并进行解压。

tar -zxvf nginx-1.19.1.tar.gz

进入解压后的目录,输入以下命令进行编译和安装:

./configure
make
make install

编译配置时如果需要常用的配置库可以使用 --with-* 选项指定编译选项,例如需要开启 Gzip,可以使用 --with-http_gzip_static_module 选项进行编译。

安全配置

在默认情况下,Nginx的安全性较好,但是为了加强安全性,我们可以进行以下配置:

设置用户和用户组

首先,我们可以为Nginx设置一个专门的用户和用户组来运行Nginx服务,可以通过以下命令进行配置:

user  nginx;
worker_processes  auto;

这样配置可以让Nginx以nginx用户的身份进行运行。

禁止访问Nginx版本号

为了保护Nginx的安全性,我们应该尽可能地隐藏Nginx的版本信息,可以通过以下配置实现:

server_tokens off;

配置防火墙

为了更好地保护Nginx,我们可以使用防火墙来限制Nginx的开放端口。例如,我们可以使用iptables来阻止非授权的IP地址访问Nginx的端口:

iptables -A INPUT -p tcp --dport 80 -j DROP

配置防盗链

Nginx可以很容易地阻止未经授权的用户从其他网站上下载您的内容,可以通过以下配置实现:

location / {
  valid_referers none blocked *.baidu.com;
  if ($invalid_referer) {
    return 403;
  }
}

上述配置可以让Nginx只允许来自baidu.com的请求。

动静分离

在开发负载较大的网站时,我们可以使用Nginx来实现动静分离,可以将静态文件(例如JavaScript、CSS、图片等)放到Nginx的静态文件服务器中,而动态内容则由后端应用服务器提供。可以通过以下配置实现:

server {
  listen  80;
  server_name  example.com;

  location /static {
    alias /var/www/static;
  }

  location / {
    proxy_pass http://appserver;
  }
}

上述配置将/static开头的请求直接转发到静态文件目录,而其余的动态请求则转发到后端应用服务器。

配置HTTPS

在生产环境中,我们使用HTTPS加密协议来保护用户隐私和数据安全。可以通过以下配置实现:

server {
  listen  443;
  server_name  example.com;

  ssl  on;
  ssl_certificate  /etc/nginx/ssl/example.com.crt;
  ssl_certificate_key  /etc/nginx/ssl/example.com.key;

  location / {
    proxy_pass http://appserver;
  }
}

上述配置启用了HTTPS协议,并使用了SSL证书进行加密。

性能优化

为了提高Nginx的性能和稳定性,并减少资源的消耗,我们可以使用以下优化技术:

启用gzip压缩

gzip  on;
gzip_min_length  1000;
gzip_comp_level  5;
gzip_proxied  any;
gzip_types  text/plain text/html text/css application/json application/javascript application/xml;

上述配置启用了gzip压缩,它可以将响应数据进行压缩,减少传输的数据量,提高响应速度。

缓存配置

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
proxy_cache_valid 200 1d;

上述配置启用了反向代理服务器的缓存功能,避免重复的请求对后端服务器造成过大的负载压力,并提高了响应速度。

示例一

下面是一个示例配置文件:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log;

events {
  worker_connections  1024;
}

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;

  keepalive_timeout  65;

  server {
    listen  80;
    server_name  example.com;

    location /static {
      alias /var/www/static;
    }

    location / {
      proxy_pass http://appserver;
    }
  }

  server {
    listen  443;
    server_name  example.com;

    ssl  on;
    ssl_certificate  /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key  /etc/nginx/ssl/example.com.key;

    location /static {
      alias /var/www/static;
    }

    location / {
      proxy_pass http://appserver;
    }
  }

  server {
    listen  80;
    server_name  static.example.com;

    location / {
      root /var/www/static;
    }
  }

  server {
    listen  80;
    server_name  api.example.com;

    location / {
      proxy_pass http://api.example.com:8080;
    }
  }

  server {
    listen  80;
    server_name  download.example.com;

    location / {
      deny all;
    }

    location /download {
      valid_referers none blocked *.example.com;
      if ($invalid_referer) {
        return 403;
      }
    }
  }

  server {
    listen  80;
    server_name  example.com;

    location / {
      proxy_cache_bypass $http_pragma;
      proxy_cache_revalidate on;

      proxy_cache my_cache;

      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_cache_valid 200 1d;
      proxy_pass http://backend;
    }
  }

  client_max_body_size 20M;
}

示例二

下面是一个简单的Nginx配置:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;

events {
  worker_connections  1024;
}

http {
  server {
    listen  80;
    server_name  example.com;

    location / {
      root /var/www/html;
      index  index.html index.htm;
    }
  }

  client_max_body_size 20M;
}

这个配置没有启用特殊的功能,只是用Nginx来提供静态网页服务,而且它也是一个单进程模式的Nginx。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • nginx搭建tcp代理服务器

    下面是详细的“nginx搭建tcp代理服务器”的完整攻略。其中,第一条示例是为了演示如何搭建一个基本的TCP代理服务器,第二条示例是为了演示如何在TCP代理服务器中开启SSL/TLS证书。 1. 搭建基本的TCP代理服务器 1.1 安装nginx 首先需要在你的服务器上安装nginx,具体的安装方法可以参考官方文档:Nginx官方文档 1.2 配置nginx…

    Nginx 2023年5月16日
    00
  • K8S Pod Sidecar 应用场景之一-加入 NGINX Sidecar 做反代和 web 服务器

    Kubernetes Pod Sidecar 简介 Sidecar 是一个独立的容器,与 Kubernetes pod 中的应用容器一起运行,是一种辅助性的应用。 Sidecar 的常见辅助性功能有这么几种: 服务网格 (service mesh) 代理 监控 Exporter(如 redis exporter) ConfigMap 或/和 Secret R…

    Nginx 2023年4月13日
    00
  • Docker容器下运行Nginx并实现反向代理

    下面是“Docker容器下运行Nginx并实现反向代理”的完整攻略。 一、准备工作 在开始之前,我们需要先安装Docker和Nginx。 Docker的安装可以参考官方文档:https://docs.docker.com/engine/install/ Nginx的安装可以参考官方文档:http://nginx.org/en/docs/install.htm…

    Nginx 2023年5月16日
    00
  • 【windows】【php】【nginx】windows 开机自启动nginx php 及nginx php配置

    #启动php-nginx   start-php-nginx.bat   @ECHO OFFECHO Starting PHP FastCGI…RunHiddenConsole.exe php-cgi.exe -b 127.0.0.1:9000cd C:\Users\ci15363\nginx-1.14.0RunHiddenConsole.exe ngi…

    Nginx 2023年4月12日
    00
  • [Linux] Nginx服务下统计网站的QPS

    单位时间的请求数就是QPS,那么在nginx服务的网站下,如果要统计QPS并且按从高到低排列,需要使用awk配合sort进行处理awk做的主要工作是把access每行日志按分隔符分开,然后循环每一行,存到一个数组里,如果只按时间不区分脚本路径,数组里存的数据是比如arr[‘[28/Nov/2019:14:12:23’]=20 key是时间,value是次数 …

    2023年4月9日
    00
  • nginx频繁的返回502

    A couple of websites on our DigitalOcean VPS  have a great amount of traffic. Due to this traffic, I ran into the error below (edited for readability). [crit] connect() to unix:/va…

    Nginx 2023年4月13日
    00
  • Nginx 反向代理并缓存及缓存清除技术

      Nginx 反向代理并缓存及缓存清除技术    #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events…

    Nginx 2023年4月13日
    00
  • Nginx geoip模块

    L:80     需要编译进 –with-http_geoip_module 首先要安装maxMind里的geoip的c开发库 https://dev.maxmind.com/geoip/legacy/downloadable/ 首先 nginx是用c写的 所以要下载c 版本的 MaxMind   然后解压缩 GeoIP-1.6.12.tar.gz 并进入…

    Nginx 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部