常用命令
查看Nginx的版本号:nginx -V
启动Nginx:start nginx
指定配置启动:nginx -c /path/to/nginx.conf
配置文件修改重新加载命令:nginx -s reload
检查默认配置是否正确: nginx -t
检查指定配置: nginx -t -c /path/to/nginx.conf
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
可以直接杀进程或任务管理器找到 nginx 结束任务
ps:直接解压出来的没加入环境变量,使用 ./nginx 运行
nginx: [emerg] CreateDirectory() “H:\Nginx/temp/client_body_temp” failed (3: The system cannot find the path specified)
nginx.exe 同目录添加 temp 文件夹。
下载
https://nginx.org/ => https://nginx.org/en/download.html
完整配置
nginx启动的进程数,通常设置成和cpu的数量相等;可以设置为: auto
worker_processes auto;
errorlog 文件位置, 有debug、info、notice、warn、error、crit几种
error_log logs/error.log notice;
error_log logs/error.log info;
error_log logs/error.log error;
pid文件地址,记录了nginx的pid,方便进程管理
pid logs/nginx.pid;
用来加载其他动态模块的配置
include nginx/modules/*.conf;
工作模式和进程连接数上限
并发总数:worker_processes*worker_connections
events {
# 每个worker_processes的最大并发链接数
worker_connections 1024;
}
与提供http服务相关的一些配置参数
http {
# 引入文件扩展名与文件类型映射表
include mime.types;
# 默认文件类型
default_type application/octet-stream;
# 设置日志的格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# access_log记录访问的用户、页面、浏览器、ip和其他的访问信息
access_log logs/access.log main;
# 设置nginx是否使用sendfile函数输出文件
# 一般的网络传输过程
# 硬盘 >> kernel buffer >> user buffer>> kernel socket buffer >>协议栈
# 使用sendfile后
# 硬盘 >> kernel buffer (快速拷贝到kernelsocket buffer) >>协栈议
# 可以显著提高传输性能
sendfile on;
# 数据包最大时发包(使用Nagle算法)
# tcp_nopush只有在启用了sendfile时才起作用,
# 在启用tcp_nopush后,程序接收到了数据包后不会马上发出,而是等待数据包最大时一次性发出,可以缓解网络拥堵(Nagle化)
tcp_nopush on;
# 立刻发送数据包(禁用Nagle算法)
# tcp_nodelay on;
# 链接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# 负载均衡:多个后台服务器接口;weight:使用到的比重等级
upstream proxyProject {
server 127.0.0.1:3330;
server 127.0.0.1:8080 weight=2;
}
# http服务上支持若干个虚拟主机。
# 每个server对应一个虚拟主机配置项
server {
listen 80;
# 修改为自己的域名
server_name www.myself.com myself.com;
# 跨域
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET,POST';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
# 301 重定向
return 301 https://www.myself.com$request_uri;
# rewrite ^ https://www.myself.com$request_uri? permanent;
}
# HTTPS server
#
server {
listen 443 ssl;
server_name www.myself.com myself.com;
# 跨域
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET,POST';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
# 证书文件
ssl_certificate ../../myself.com/Nginx/1_myself.com_bundle.crt;
ssl_certificate_key ../../myself.com/Nginx/2_myself.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
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;
if ($ssl_protocol = "") {
rewrite ^(.*) https://$host$1 permanent;
}
# 根路由,正常访问
location / {
root html;
index index.html index.htm;
}
# 代理路由,代理访问,多个服务实现负载均衡
location /proxy {
proxy_pass http://proxyProject$request_uri;
proxy_set_header X-Real-IP $remote_addr;
}
}
}