Nginx配置与常见问题

1. 代理与反向代理

https://blog.youkuaiyun.com/xuanjiewu/article/details/79458266

2. 网速限制

https://blog.youkuaiyun.com/zhengholien/article/details/78003159

https://blog.youkuaiyun.com/u013160024/article/details/70182911

3. 502问题解决

https://www.cnblogs.com/feng18/p/5148985.html

nginx配置优化、安全:

https://www.jb51.net/article/147923.htm

  • 配置进程数:进程数 = CPU数量
  • 配置每个进程的最大连接数
  • 单个IP的最大连接数(防止爬虫、盗链)
  • 使用epoll的I/O多路复用模型
  • 配置缓存、缓存过期时间
  • http请求超时时间
  • 隐藏响应头中的有关操作系统和web server(Nginx)版本号的信息,这样对于安全性是有好处的。

4.配置HTTPS

    申请CA证书

    配置:   

server {
    listen 443;
    server_name bjubi.com; // 你的域名
    ssl on;   //开启SSL
    root /var/www/bjubi.com; // 前台文件存放文件夹,可改成别的
    index index.html index.htm;// 上面配置的文件夹里面的index.html
    ssl_certificate  cert/214292799730473.pem;// 改成你的证书的名字
    ssl_certificate_key cert/214292799730473.key;// 你的证书的名字
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        index index.html index.htm;
    }
}
server {
    listen 80;
    server_name bjubi.com;// 你的域名
    rewrite ^(.*)$ https://$host$1 permanent;// 把http的域名请求转成https
}

5.虚拟主机

接下来,我们需要为 PHP 应用配置一个虚拟主机。虚拟主机是一系列设置,用于告知 Nginx PHP 应用的域名、在文件系统中的位置,已经如何把 HTTP 请求转发给 PHP-FPM 进程池:

server {
    listen 80;
    server_name example.com;
    index index.php
    client_max_body_size 50M;
    error_log /home/deploy/apps/logs/example.error.log;
    access_log /home/deploy/apps/logs/example.access.log;
    root /home/deploy/apps/example.com/current/public;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000;
    }
} 

下面简要说明下每个虚拟主机设置:

  • listen:设置 Nginx 监听哪个端口进入的 HTTP 请求。一般 HTTP 请求从 80 端口进入,HTTPS 请求从 443端口进入。

  • server_name:用于识别虚拟主机的域名,这个要设置为你的应用使用的域名,而且域名要指向服务器的 IP 地址。如果 HTTP 请求头中 Host 首部的值和虚拟主机中 server_name 的值相匹配,Nginx 就会把这个 HTTP 请求发送给这个虚拟主机。

  • index:HTTP 请求 URI 没有指定文件时的默认文件。

  • client_max_body_size:对这个虚拟主机来说,Nginx 接受 HTTP 请求主体长度的最大值。如果请求主体长度超过这个值,Nginx 会返回 4XX 响应。

  • error_log:这个虚拟主机错误日志文件在文件系统中的路径。

  • access_log:这个虚拟主机访问日志文件在文件系统中的路径。

  • root:应用根目录路径。

除了上述设置外,还有两个 location 块,这两个 location 块的作用是告诉 Nginx 如何处理匹配指定 URL 模式的 HTTP 请求:

location / {} 使用 try_files 指令查找匹配所请求 URI 的文件,如果没有找到,再查找匹配所请求 URI 的目录,如果目录也没有找到,则把 HTTP 请求的 URI 重写为 /index.php,如果有查询字符串的话,还会把查询字符串附加到 URI 的末尾,这个重写的 URL,以及所有以 .php 结尾的URI,都由 location ~ \.php {} 块管理。

location ~ \.php {} 块把 HTTP 请求转发给 PHP-FPM 进程池进行处理,在这个块中我们把 PHP 请求转发到端口 9000 让 PHP-FPM 处理请求。

配置Nginx时,常见的问题和解决方法如下: 1. 错误的配置语法:Nginx配置文件使用特定的语法,如果配置文件中存在语法错误,Nginx将无法启动或者无法加载配置。解决方法是检查配置文件中的语法错误,并使用`nginx -t`命令进行语法检查。 2. 端口冲突:如果Nginx监听的端口其他应用程序监听的端口冲突,Nginx将无法启动。解决方法是修改Nginx配置文件中的端口号,确保其他应用程序没有冲突。 3. 无法访问静态文件:如果配置了静态文件的路径,但是无法通过Nginx访问这些文件,可能是由于权限问题或者路径配置错误。解决方法是确保文件路径正确,并检查文件权限是否允许Nginx访问。 4. 代理设置错误:如果配置代理服务器,但是无法正确转发请求给目标服务器,可能是由于代理设置错误。解决方法是检查代理设置是否正确,并确保目标服务器可以正常访问。 5. SSL证书配置问题:如果配置了SSL证书,但是无法正确启用HTTPS访问,可能是由于证书配置错误。解决方法是检查证书路径和权限,并确保证书文件正确配置。 6. 负载均衡问题:如果配置了负载均衡,但是请求没有被正确分发给后端服务器,可能是由于负载均衡配置错误。解决方法是检查负载均衡配置,确保后端服务器的健康检查和权重配置正确。 7. 缓存配置问题:如果配置了缓存,但是无法正确缓存响应,可能是由于缓存配置错误。解决方法是检查缓存配置,并确保响应的缓存策略和过期时间正确设置。 以上是一些常见的Nginx配置问题及其解决方法,根据具体情况进行排查和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值