• 学习笔记-Nginx


    Nginx


    项目地址

    配置生成


    反向代理

    反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器.

    1. cd /usr/local/nginx/conf
    2. vim nginx.conf
    3. server {
    4. #侦听的80端口
    5. listen 80;
    6. server_name localhost;
    7. location / {
    8. proxy_pass http://127.0.0.1:81; #在这里设置一个代理
    9. #以下是一些反向代理的配置可删除
    10. proxy_redirect off;
    11. #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
    12. proxy_set_header Host $host;
    13. proxy_set_header X-Real-IP $remote_addr;
    14. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    15. client_max_body_size 10m; #允许客户端请求的最大单文件字节数
    16. client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
    17. proxy_connect_timeout 300; #nginx跟后端服务器连接超时时间(代理连接超时)
    18. proxy_send_timeout 300; #后端服务器数据回传时间(代理发送超时)
    19. proxy_read_timeout 300; #连接成功后,后端服务器响应时间(代理接收超时)
    20. proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    21. proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
    22. proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
    23. proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
    24. }
    25. }

    添加https

    1. openssl req -new -x509 -nodes -days 365 -newkey rsa:1024 -out httpd.crt -keyout httpd.key # 生成自签名证书,信息不要瞎填,Common Name一定要输你的网址
    2. mv httpd.crt /etc/nginx
    3. mv httpd.key /etc/nginx
    1. vim /etc/nginx/conf.d/test.com.conf
    2. server {
    3. listen 443 ssl http2;
    4. server_name www.test.com test.com;
    5. root /usr/share/nginx/test.com;
    6. index index.html;
    7. ssl_certificate "/etc/nginx/httpd.crt";
    8. ssl_certificate_key "/etc/nginx/httpd.key";
    9. location / {
    10. }
    11. error_page 404 /404.html;
    12. location = /40x.html {
    13. }
    14. error_page 500 502 503 504 /50x.html;
    15. location = /50x.html {
    16. }
    17. }
    systemctl restart nginx

    添加PHP环境支持

    Centos

    1. # 安装PHP源
    2. rpm -ivh https://mirror.webtatic.com/yum/el7/epel-release.rpm
    3. rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    4. # 安装 PHP7.0
    5. yum install -y php70w php70w-fpm php70w-mysql php70w-mysqlnd
    6. systemctl start php-fpm.service
    7. netstat -tnlp # 检查 php-fpm 默认监听端口:9000
    1. # 添加配置
    2. vim /etc/nginx/conf.d/test.com.conf
    3. # php-fpm (新增)
    4. location ~\.php$ {
    5. fastcgi_pass 127.0.0.1:9000;
    6. fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
    7. fastcgi_param PATH_INFO $fastcgi_script_name;
    8. include fastcgi_params;
    9. }
    1. systemctl restart nginx
    2. systemctl restart php-fpm
    1. vim /usr/share/nginx/test.com/info.php
    2. phpinfo();
    3. ?>

    curl http://www.test.com/info.php 测试

    Ubuntu

    1. apt-get update # 更新安装包
    2. apt-get install -y language-pack-en-base
    3. locale-gen en_US.UTF-8 # 设定语言编码为 UTF-8
    4. apt-get install -y software-properties-common
    5. LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php # 添加 php7 的 ppa
    6. apt-get update # 更新安装包
    7. apt-get install -y php7.1 # 安装 php
    8. php -v # 查看是否安装成功
    9. apt-get install -y php7.1-fpm php7.1-mysql php7.1-curl php7.1-xml php7.1-mcrypt php7.1-json 2-gd php7.1-mbstring php7.1-zip # 安装其他必备模块
    10. php -m # 查看已安装模块
    11. service php7.1-fpm start

    配置 Nginx

    1. vim /etc/nginx/sites-available/default
    2. server {
    3. index index.php index.html index.htm;
    4. server_name xxx.xx;
    5. location ~ \.php$ {
    6. fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    7. fastcgi_index index.php;
    8. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    9. include fastcgi_params;
    10. }
    11. }
    1. service nginx restart
    2. service firewalld stop

    Debian

    1. apt install -y apt-transport-https ca-certificates curl software-properties-common
    2. curl -fsSL https://packages.sury.org/php/apt.gpg | apt-key add -
    3. add-apt-repository "deb https://packages.sury.org/php/ $(lsb_release -cs) main"
    4. apt update
    5. apt install -y php7.2
    6. apt install -y php7.2-common php7.2-cli
    7. apt install -y libcurl3
    8. apt install -y php7.2-fpm php7.2-mysql php7.2-curl php7.2-xml php7.2-json php7.2-gd php72-mbstring php7.2-zip
    9. php -v
    10. systemctl status php7.2-fpm

    配置 Nginx

    1. vim /etc/nginx/sites-available/default
    2. server {
    3. index index.php index.html index.htm;
    4. server_name xxx.xx;
    5. location ~ \.php$ {
    6. fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    7. fastcgi_index index.php;
    8. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    9. include fastcgi_params;
    10. }
    11. }
    1. service nginx restart
    2. service firewalld stop

    流媒体服务

    apt install nginx

    获取 RTMP 模块

    1. add-apt-repository universe
    2. apt install libnginx-mod-rtmp
    1. vim /etc/nginx/nginx.conf
    2. ++ rtmp {
    3. ++ server {
    4. ++ listen 1935;
    5. ++ chunk_size 4096;
    6. ++ application live {
    7. ++ live on;
    8. ++ record off;
    9. ++ }
    10. ++ }
    11. ++ }
    systemctl restart nginx

    obs 上设置

    然后开始推流即可


    隐藏 Nginx 版本号

    编辑 nginx.conf

    http{} 段中加入 server_tokens off;


    413 Request Entity Too Large

    nginx 默认上传文件的大小是 1M,可 nginx 的设置中修改

    编辑 nginx.conf

    http{} 段中加入 client_max_body_size 20m

    将允许最大上传的大小设为 20m


    Source & Reference

    点击关注,共同学习!安全狗的自我修养

    github haidragon

    https://github.com/haidragon

  • 相关阅读:
    Nginx 压测方法论和性能指标
    【Java】可变参数
    matlab展示两个向量之间的差异
    多线程带来的的风险-线程安全
    day02IP地址详解以及简单的DOS命令
    【后端开发实习】用Nodejs操作mongodb结合Mongoose实现数据库操作
    算法金 | 10 大必知的自动化机器学习库(Python)
    springboot监控
    C++内存分区概念
    mysql发生系统错误:2 系统找不到指定的文件解决方案
  • 原文地址:https://blog.csdn.net/sinat_35360663/article/details/127692477