nginx是一个http的反向代理服务器,一个邮件代理服务器,或者一个TCP/UDP代理服务器。nginx包含一个主进程(master process)和多个工作进程(work process),主进程负责读取配置文件,分配网络请求给工作进程以及对工作进程的维护,工作进程负责具体的网络请求处理,工作进程的数量配置文件、CPU的核数确定。
nginx的配置文件是需要主要学习了解的内容
nginx的启动、重启、停止操作
在root下,输入nginx启动
接下来,nginx可以通过nginx -s signal进行控制
- nginx -s reload 重新加载配置文件
- nginx -s quit 正常关闭nginx进程
- nginx -s reopen 重新打开日志文件
- nginx -s stop 直接关闭nginx
配置文件的结构(重点)
nginx可以看成由很多模块(module)组成,这些模块由nginx的“指令”来控制。
nginx的指令可以分为两类
- 简单的指令, 简单的指令的格式是
name parameter;
- 指令块, 指令块的格式是
blockDirectiveName { additional instruction }
,如果指令块中包含了其他的指令(directive),那么这个指令块叫做上下文(context)
在配置文件中,不在上下文中的指令,我们认为它在主上下文(main context), event,http指令在主上下文,server在http中,location在server中。
例子1 nginx提供静态网页服务
user yourname;
worker_processes auto;
error_log /.../error.log notice;
pid /.../nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 日志文件的格式 其中main是日志格式的标签
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 /.../access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
# include /.../conf.d/*.conf;
server {
listen 9999;
# added by peter
location / {
root /.../apache-tomcat-8.5.69/webapps/docs;
}
location /images/ {
root /.../apache-tomcat-8.5.69/webapps/docs;
}
}
}
注意,这里如果出现了403forbiden的问题,估计是由于权限不足导致。
例子2 设置一个简单的代理服务器
nginx常用的场景就是代理服务器了,
user yourname;
worker_processes auto;
error_log /.../nginx/error.log notice;
pid /.../nginx.pid;
events {
worker_connections 1024;
}
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 /.../access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
# include /.../conf.d/*.conf;
server {
listen 9998;
root /.../apache-tomcat-8.5.69/webapps/docs;
location / {
# 代理到 http://ipaddress:8080
proxy_pass http://ipaddress:8080;
}
# 正则表达式,~是用在正则表达式之前,用来匹配所有gif,jpg,png,svg格式的图片
location ~ \.(gif|jpg|png|svg)$ {
root /.../apache-tomcat-8.5.69/webapps/docs/images;
}
}
}
nginx匹配请求和配置文件中的前缀,首先匹配最长前缀,然后检查正则表达式,
例子3 设置一个Fast CGI代理
没有php,就算了