nginx
程序员文章站
2022-06-11 16:14:01
...
1.
nginx 如何处理请求?
基于域名来路由处理请求:
根据配置文件 '/conf/nginx.conf' 配置的域名, 由与域名匹配的请求头的'HOST'条目来决定请求由哪台服务器处理. 如果没有找到匹配的服务器名称, 使用第一台服务器作为默认的服务器.也可以通过 'default_server' 指定其它服务器作为默认服务器. 注意: 'default_server' 参数适用于版本 0.8.21+.
如果没有配置域名,默认为空, 而不是主机名.
当然,如果不想处理没有配置的服务器名称,可以直接返回 444.
混合IP和域名来跌幅处理请求: 先根据IP和端口进行匹配,再进行域名匹配.
配置文件的某些属性支持通配符和正则表达式.
通配符包括 '*' '?'
正则表达式以 '~'开头,表示这是一个正则表达式.正则表达式最好用双引号包围, 避免'{' '}'这样的符号解析出错.
正则表达式支持变量替换:
标准语法 : ?<name>
2.
SSL 配置:
3.
SSL 优化
worker_processes 数不能少于CPU数量.
启用SSL缓存,延长SSL缓存生存时间.
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
1m大约可包括4000个sessions.
证书链:
4.
启用关闭调试日志
5.
启动与关闭
查看进程数:
注意: nginx 不要安装在中文目录下,否则会出现下面的错误信息.
nginx No mapping for the Unicode character exists in the target multi-byte code page.
6.
访问主页
[url]http://localhost/[/url]
出现:
Welcome to nginx!
表示成功了.
nginx 如何处理请求?
基于域名来路由处理请求:
根据配置文件 '/conf/nginx.conf' 配置的域名, 由与域名匹配的请求头的'HOST'条目来决定请求由哪台服务器处理. 如果没有找到匹配的服务器名称, 使用第一台服务器作为默认的服务器.也可以通过 'default_server' 指定其它服务器作为默认服务器. 注意: 'default_server' 参数适用于版本 0.8.21+.
如果没有配置域名,默认为空, 而不是主机名.
server {
listen 80 default_server ;
server_name nginx.org www.nginx.org;
...
}
server {
listen 80;
server_name nginx.net www.nginx.net;
...
}
server {
listen 80;
server_name nginx.com www.nginx.com;
...
}
当然,如果不想处理没有配置的服务器名称,可以直接返回 444.
server {
listen 80 default_server ;
server_name nginx.org www.nginx.org;
return 444;
}
混合IP和域名来跌幅处理请求: 先根据IP和端口进行匹配,再进行域名匹配.
server {
listen 192.168.1.1:80;
server_name nginx.org www.nginx.org;
...
}
server {
listen 192.168.1.1:80 default_server;
server_name nginx.net www.nginx.net;
...
}
server {
listen 192.168.1.2:8000 default_server;
server_name nginx.com www.nginx.com;
...
}
配置文件的某些属性支持通配符和正则表达式.
通配符包括 '*' '?'
正则表达式以 '~'开头,表示这是一个正则表达式.正则表达式最好用双引号包围, 避免'{' '}'这样的符号解析出错.
server_name "~^(?<name>\w\d{1,3}+)\.nginx\.net$";
正则表达式支持变量替换:
标准语法 : ?<name>
server {
server_name ~^(www\.)?(?<domain>.+)$;
location / {
root /sites/$domain;
}
}
2.
SSL 配置:
server {
listen 443;
server_name www.nginx.com;
ssl on;
ssl_certificate www.nginx.com.crt;
ssl_certificate_key www.nginx.com.key;
...
}
3.
SSL 优化
worker_processes 4;
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
server {
listen 443;
server_name www.nginx.com;
keepalive_timeout 70;
ssl on;
ssl_certificate www.nginx.com.crt;
ssl_certificate_key www.nginx.com.key;
...
worker_processes 数不能少于CPU数量.
启用SSL缓存,延长SSL缓存生存时间.
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
1m大约可包括4000个sessions.
证书链:
$ cat www.nginx.com.crt bundle.crt > www.nginx.com.chained.crt
server {
listen 443;
server_name www.nginx.com;
ssl on;
ssl_certificate www.nginx.com.chained.crt;
ssl_certificate_key www.nginx.com.key;
...
}
4.
启用关闭调试日志
error_log /path/to/log debug; #开启
http {
server {
error_log /path/to/log; #关闭
...
5.
启动与关闭
start nginx
nginx -s stop quick exit
nginx -s quit graceful quit
nginx -s reload changing configuration, starting a new worker, quitting an old worker gracefully
nginx -s reopen reopening log files
查看进程数:
注意: nginx 不要安装在中文目录下,否则会出现下面的错误信息.
nginx No mapping for the Unicode character exists in the target multi-byte code page.
6.
访问主页
[url]http://localhost/[/url]
出现:
Welcome to nginx!
表示成功了.
下一篇: nginx