Nginx

Nginx 是前后端开发工程师必须掌握的神器。该神器有很多使用场景,比如反向代理、负载均衡、动静分离、跨域等等。

Nginx 可视化配置神器 - 图1

把 Nginx 下载下来,打开 conf 文件夹的 nginx.conf 文件,Nginx 服务器的基础配置和默认的配置都存放于此。

配置是让程序员非常头疼的事,比如 Java 后端框架 SSM ,大量配置文件让不少人头皮发麻,所以才涌现了 Spring Boot 这样能简化配置的框架。

如果能够采用可视化的方式对 Nginx 进行配置,那该多好。在 GitHub 上发现了一款可以一键生成 Nginx 配置的神器,相当给力。

NGINX Config

Nginx Config 是一个强大的 Nginx 配置文件生成器,号称配置 Nginx 服务器所需的唯一工具。 项目地址:https://github.com/digitalocean/nginxconfig.io Nginx 可视化配置神器 - 图2 ## Nginx 特性 + 高-效静态内容处理:Nginx能够以极少的资源服务大量的静态文件请求。 + 优-秀的反向代理能力:作为反向代理,Nginx能够平衡后端服务器的负载,从而提高应用的整体性能和稳定性。 + 负载均衡:通过智-能分配客户端请求到不同后端服务器,Nginx确保每个服务器都不会过载,同时提高整体的服务可用性。 + 内置缓存:Nginx可以缓存请求结果,减少对后端服务器的请求频率,加快响应速度。 + 原生SSL/TLS支持:可以处理加密的HTTPS请求,保障数据传输的安-全。 + WebSocket支持:支持实时Web应用所需的WebSocket协议。 有很多功能和相应的配置指令。现在可以深入研究NGINX文档,或者可以使用这个工具来检查NGINX是如何工作的,观察你的输入是如何影响输出的,并为特定用例生成最佳配置(同时也可以使用文档)。

NGINX Config 特点

Nginx Config 支持以下功能的可视化配置:HTTPS、HTTP/2、IPv6、certbot、HSTS、安全请求头、SSL 配置、OCSP 解析器、缓存、gzip、brotli、回退路由、反向代理、www/non-www 重定向、CDN、PHP(TCP/socket、 WordPress、Drupal、Magento、Joomla)、Node.js、Python (Django) 服务器等。

先来看看它都支持什么功能的配置:反向代理、HTTPS、HTTP/2、IPv6, 缓存、WordPress、CDN、Node.js 支持、 Python (Django) 服务器等等。

如果想在线进行配置,只需要打开网站:https://nginxconfig.io/,按照自己的需求进行操作就行了。

初始配置

Nginx 可视化配置神器 - 图4

站点配置

Nginx 可视化配置神器 - 图5

全局配置

Nginx 可视化配置神器 - 图6

使用配置

Nginx 可视化配置神器 - 图7

Nginx 可视化配置神器 - 图8

传输压缩配置

配置文件

主配置

/etc/nginx/nginx.conf

  1. # Generated by nginxconfig.io
  2. # See nginxconfig.txt for the configuration share link
  3. user www-data;
  4. pid /run/nginx.pid;
  5. worker_processes auto;
  6. worker_rlimit_nofile 65535;
  7. # Load modules
  8. include /etc/nginx/modules-enabled/*.conf;
  9. events {
  10. multi_accept on;
  11. worker_connections 65535;
  12. }
  13. http {
  14. charset utf-8;
  15. sendfile on;
  16. tcp_nopush on;
  17. tcp_nodelay on;
  18. server_tokens off;
  19. log_not_found off;
  20. types_hash_max_size 2048;
  21. types_hash_bucket_size 64;
  22. client_max_body_size 16M;
  23. # MIME
  24. include mime.types;
  25. default_type application/octet-stream;
  26. # Logging
  27. access_log off;
  28. error_log /dev/null;
  29. # SSL
  30. ssl_session_timeout 1d;
  31. ssl_session_cache shared:SSL:10m;
  32. ssl_session_tickets off;
  33. # Diffie-Hellman parameter for DHE ciphersuites
  34. ssl_dhparam /etc/nginx/dhparam.pem;
  35. # Mozilla Intermediate configuration
  36. ssl_protocols TLSv1.2 TLSv1.3;
  37. ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  38. # OCSP Stapling
  39. ssl_stapling on;
  40. ssl_stapling_verify on;
  41. resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
  42. resolver_timeout 2s;
  43. # Load configs
  44. include /etc/nginx/conf.d/*.conf;
  45. include /etc/nginx/sites-enabled/*;
  46. }

次配置

/etc/nginx/sites-available/tinywan.com.conf

  1. server {
  2. listen 443 ssl http2;
  3. listen [::]:443 ssl http2;
  4. server_name tinywan.com;
  5. set $base /var/www/tinywan.com;
  6. root $base/public;
  7. # SSL
  8. ssl_certificate /etc/letsencrypt/live/tinywan.com/fullchain.pem;
  9. ssl_certificate_key /etc/letsencrypt/live/tinywan.com/privkey.pem;
  10. ssl_trusted_certificate /etc/letsencrypt/live/tinywan.com/chain.pem;
  11. # security
  12. include nginxconfig.io/security.conf;
  13. # logging
  14. access_log /var/log/nginx/access.log combined buffer=512k flush=1m;
  15. error_log /var/log/nginx/error.log warn;
  16. # index.php
  17. index index.php;
  18. # index.php fallback
  19. location / {
  20. try_files $uri $uri/ /index.php?$query_string;
  21. }
  22. # additional config
  23. include nginxconfig.io/general.conf;
  24. # handle .php
  25. location ~ \.php$ {
  26. fastcgi_pass unix:/var/run/php/php-fpm.sock;
  27. include nginxconfig.io/php_fastcgi.conf;
  28. }
  29. }
  30. # subdomains redirect
  31. server {
  32. listen 443 ssl http2;
  33. listen [::]:443 ssl http2;
  34. server_name *.tinywan.com;
  35. # SSL
  36. ssl_certificate /etc/letsencrypt/live/tinywan.com/fullchain.pem;
  37. ssl_certificate_key /etc/letsencrypt/live/tinywan.com/privkey.pem;
  38. ssl_trusted_certificate /etc/letsencrypt/live/tinywan.com/chain.pem;
  39. return 301 https://tinywan.com$request_uri;
  40. }
  41. # HTTP redirect
  42. server {
  43. listen 80;
  44. listen [::]:80;
  45. server_name .tinywan.com;
  46. include nginxconfig.io/letsencrypt.conf;
  47. location / {
  48. return 301 https://tinywan.com$request_uri;
  49. }
  50. }

PHP 配置

/etc/nginx/nginxconfig.io/php_fastcgi.conf

  1. # 404
  2. try_files $fastcgi_script_name =404;
  3. # default fastcgi_params
  4. include fastcgi_params;
  5. # fastcgi settings
  6. fastcgi_index index.php;
  7. fastcgi_buffers 8 16k;
  8. fastcgi_buffer_size 32k;
  9. # fastcgi params
  10. fastcgi_param DOCUMENT_ROOT $realpath_root;
  11. fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
  12. fastcgi_param PHP_ADMIN_VALUE "open_basedir=$base/:/usr/lib/php/:/tmp/";

安全配置

/etc/nginx/nginxconfig.io/security.conf

  1. # security headers
  2. add_header X-XSS-Protection "1; mode=block" always;
  3. add_header X-Content-Type-Options "nosniff" always;
  4. add_header Referrer-Policy "no-referrer-when-downgrade" always;
  5. add_header Content-Security-Policy "default-src 'self' http: https: ws: wss: data: blob: 'unsafe-inline'; frame-ancestors 'self';" always;
  6. add_header Permissions-Policy "interest-cohort=()" always;
  7. add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
  8. # . files
  9. location ~ /\.(?!well-known) {
  10. deny all;
  11. }

选择场景,填写好参数,系统就会自动生成配置文件。

功能:

  • HTTPS
  • HTTP/2
  • IPv6
  • certbot
  • HSTS
  • 安全标头
  • SSL 配置文件
  • OCSP 解析器
  • 缓存
  • gzip
  • brotli
  • 回退路由
  • 反向代理
  • www/non-www 重定向
  • CDN
  • PHP(TCP/socket、 WordPress、Drupal、Magento、Joomla)
  • Node.js 支持
  • Python (Django) 服务器等

开源地址:github.com/digitalocean/nginxconfig.io

网站:digitalocean.com/community/tools/nginx