ToB企服应用市场:ToB评测及商务社交产业平台

标题: Nginx 常用的基础设置(前端相干方面) [打印本页]

作者: 大连全瓷种植牙齿制作中心    时间: 2024-11-28 15:51
标题: Nginx 常用的基础设置(前端相干方面)

   Nginx是一款高性能的Web服务器和反向代理服务器,广泛应用于互联网领域。作为一名前端同砚,了解并把握Nginx的设置是非常有须要的。
  安装Nginx
  1. sudo apt-get update
  2. sudo apt-get install nginx
复制代码
查看Nginx版本
  1. nginx -v
复制代码
启动、停止、重启Nginx服务
  1. sudo service nginx start      # 启动Nginx服务
  2. sudo service nginx stop       # 停止Nginx服务
  3. sudo service nginx restart
  4.     # 重启Nginx服务
复制代码
Nginx设置文件结构
Nginx的主设置文件位于/etc/nginx/nginx.conf,其他设置文件位于/etc/nginx/sites-available目次下。每个站点的设置文件以站点名命名,如default、example.com等。

  1. server {
  2.     listen 80;          # 监听端口号
  3.     server_name example.com; # 域名或IP地址
  4.     root /var/www/html; # 网站根目录
  5.     index index.html;   # 默认首页文件名
  6. }
复制代码
创建站点设置文件
在/etc/nginx/sites-available目次下创建一个名为example.com的文件,并将上述设置内容复制到该文件中。然后创建一个符号链接到/etc/nginx/sites-enabled目次下:
  1. sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
复制代码
重启Nginx服务使设置见效
  1. sudo service nginx restart
复制代码
至此,你已经成功设置了一个根本的Nginx站点。固然,Nginx另有很多高级功能,如负载均衡、缓存、SSL等,可以根据须要举行设置。
Nginx设置示例
基础设置:
  1. user                            root;
  2. worker_processes                1;
  3. events {
  4.   worker_connections            10240;
  5. }
  6. http {
  7.   log_format                    '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
  8.   include                       mime.types;
  9.   default_type                  application/octet-stream;
  10.   sendfile                      on;
  11.   #autoindex                    on;
  12.   #autoindex_exact_size         off;
  13.   autoindex_localtime           on;
  14.   keepalive_timeout             65;
  15.   gzip                          on;
  16.   gzip_disable                  "msie6";
  17.   gzip_min_length               100;
  18.   gzip_buffers                  4 16k;
  19.   gzip_comp_level               1;
  20.   gzip_types                  text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
  21.   gzip_types                    "*";
  22.   gzip_vary                     off;
  23.   server_tokens                 off;
  24.   client_max_body_size          200m;
  25.   server {
  26.     listen                      80 default_server;
  27.     server_name                 _;
  28.     return                      403 /www/403/index.html;
  29.   }
  30.   include                       ../serve/*.conf;
  31. }
复制代码
隐藏 Nginx 版本信息:
  1. http {
  2.   server_tokens         off;
  3. }
复制代码
禁止ip直接访问80端口
  1. server {
  2.   listen                80 default;
  3.   server_name           _;
  4.   return                500;
  5. }
复制代码
启动 web 服务 (vue 项目为例)
  1. server {
  2.   # 项目启动端口
  3.   listen            80;
  4.   # 域名(localhost)
  5.   server_name       _;
  6.   # 禁止 iframe 嵌套
  7.   add_header        X-Frame-Options SAMEORIGIN;
  8.   
  9.   # 访问地址 根路径配置
  10.   location / {
  11.     # 项目目录
  12.     root             html;
  13.     # 默认读取文件
  14.     index           index.html;
  15.     # 配置 history 模式的刷新空白
  16.     try_files       $uri $uri/ /index.html;
  17.   }
  18.   
  19.   # 后缀匹配,解决静态资源找不到问题
  20.   location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
  21.     root           html/static/;
  22.   }
  23.   
  24.   # 图片防盗链
  25.   location ~/static/.*\.(jpg|jpeg|png|gif|webp)$ {
  26.     root              html;
  27.     valid_referers    *.deeruby.com;
  28.     if ($invalid_referer) {
  29.       return          403;
  30.     }
  31.   }
  32.   
  33.   # 访问限制
  34.   location /static {
  35.     root               html;
  36.     # allow 允许
  37.     allow              39.xxx.xxx.xxx;
  38.     # deny  拒绝
  39.     deny               all;
  40.   }
  41. }
复制代码
PC端和移动端利用不同的项目文件映射
  1. server {
  2.   ......
  3.   location / {
  4.     root /home/static/pc;
  5.     if ($http_user_agent ~* '(mobile|android|iphone|ipad|phone)') {
  6.       root /home/static/mobile;
  7.     }
  8.     index index.html;
  9.   }
  10. }
复制代码
一个web服务,设置多个项目 (location 匹配路由区别)
  1. server {
  2.   listen                80;
  3.   server_name           _;
  4.   
  5.   # 主应用
  6.   location / {
  7.     root          html/main;
  8.     index               index.html;
  9.     try_files           $uri $uri/ /index.html;
  10.   }
  11.   
  12.   # 子应用一
  13.   location ^~ /store/ {
  14.     proxy_pass          http://localhost:8001;
  15.     proxy_redirect      off;
  16.     proxy_set_header    Host $host;
  17.     proxy_set_header    X-Real-IP $remote_addr;
  18.     proxy_set_header    X-Forwarded-For
  19.     proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  20.   }
  21.   
  22.   # 子应用二
  23.   location ^~ /school/ {
  24.     proxy_pass          http://localhost:8002;
  25.     proxy_redirect      off;
  26.     proxy_set_header    Host $host;
  27.     proxy_set_header    X-Real-IP $remote_addr;
  28.     proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  29.   }
  30.   
  31.   # 静态资源读取不到问题处理
  32.   rewrite ^/api/profile/(.*)$ /(替换成正确路径的文件的上一层目录)/$1 last;
  33. }
  34. # 子应用一服务
  35. server {
  36.   listen                8001;
  37.   server_name           _;
  38.   location / {
  39.     root          html/store;
  40.     index               index.html;
  41.     try_files           $uri $uri/ /index.html;
  42.   }
  43.   
  44.   location ^~ /store/ {
  45.     alias               html/store/;
  46.     index               index.html index.htm;
  47.     try_files           $uri /store/index.html;
  48.   }
  49.   
  50.   # 接口代理
  51.   location  /api {
  52.     proxy_pass          http://localhost:8089;
  53.   }
  54. }
  55. # 子应用二服务
  56. server {
  57.   listen                8002;
  58.   server_name           _;
  59.   location / {
  60.     root          html/school;
  61.     index               index.html;
  62.     try_files           $uri $uri/ /index.html;
  63.   }
  64.   
  65.   location ^~ /school/ {
  66.     alias               html/school/;
  67.     index               index.html index.htm;
  68.     try_files           $uri /school/index.html;
  69.   }
  70.   
  71.   # 接口代理
  72.   location  /api {
  73.     proxy_pass          http://localhost:10010;
  74.   }
  75. }
复制代码
设置负载均衡
  1. upstream my_upstream {
  2.   server                http://localhost:9001;
  3.   server                http://localhost:9002;
  4.   server                http://localhost:9003;
  5. }
  6. server {
  7.   listen                9000;
  8.   server_name           test.com;
  9.   location / {
  10.     proxy_pass          my_upstream;
  11.     proxy_set_header    Host $proxy_host;
  12.     proxy_set_header    X-Real-IP $remote_addr;
  13.     proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  14.   }
  15. }
复制代码
SSL 设置 HTTPS
  1. server {
  2.   listen                      80;
  3.   server_name                 www.xxx.com;
  4.   # 将 http 重定向转移到 https
  5.   return 301 https://$server_name$request_uri;
  6. }
  7. server {
  8.   listen                      443 ssl;
  9.   server_name                 www.xxx.com;
  10.   ssl_certificate             /etc/nginx/ssl/www.xxx.com.pem;
  11.   ssl_certificate_key         /etc/nginx/ssl/www.xxx.com.key;
  12.   ssl_session_timeout         10m;
  13.   ssl_ciphers                 ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  14.   ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
  15.   ssl_prefer_server_ciphers   on;
  16.   
  17.   location / {
  18.     root                    /project/xxx;
  19.     index                   index.html index.htm index.md;
  20.     try_files               $uri $uri/ /index.html;
  21.   }
  22. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4