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 处理请求。