./configure --without-module1 --without-module2 --without-module3
// 例如
./configure --without-http_dav_module --withouthttp_spdy_module
-
./configure- 根据你的系统环境和选择的配置系统是否有编译
Nginx所需的工具和库,并创建一个适合你的系统Makefile。
- 根据你的系统环境和选择的配置系统是否有编译
-
--without-module1 --without-module2 --without-module3configure脚本参数,用于指定在构建Nginx时不需要包含那些模块。module1、module2和module3表示需要禁用的Nginx模块。
-
--without-http_dav_module --withouthttp_spdy_module--without-http_dav_module在构建Nginx时不包含HTTP的DAV模块,这个模块支持文件的编辑和管理。--withouthttp_spdy_module禁用HTTP的SPDY模块,SPDY是一个网络协议,用于减少网页加载时间,现在被HTTP/2取代。
worker_processes 8;
// Nginx 进程数,建议按照CPU数目来指定,一般为它的倍数 (如,2个四核的CPU计为8)。
worker_rlimit_nofile 65535;
//一个 Nginx 进程打开的最多文件描述符数目
worker_connections 65535;
//每个进程允许的最多连接数
server {
listen 80; // 监听端口
server_name www.mingongge.com; // 域名信息
location / {
root /www/www; // 网站根目录
index index.html index.htm; // 默认首页类型
deny 192.168.2.11; // 禁止访问的ip地址,可以为all
allow 192.168.3.44; // 允许访问的ip地址,可以为all
}
}
server一个服务器配置块开始。
配置Nginx状态页面
[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
……
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
……
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
通过命令查看
Nginx配置文件并应用新的配置信息,以刷新Nginx的服务。
-
[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf- 使用
cat命令来查看Nginx配置文件的内容,/usr/local/nginx/conf/nginx.conf是Nginx配置文件的路径。
- 使用
-
……- 省略了配置文件中的其他配置项。
-
location /NginxStatus {Nginx服务器的一个虚拟主机配置快。/NginxStatus是虚拟主机的根目录,在这个块定义虚拟主机的特定行为。
-
stub_status on- 启用
Nginx状态信息显示功能。 - 通过访问
/NginxStatus这个URL,用户可以查看Nginx服务器的一些基本状态信息,如连接数、请求处理情况等。
- 启用
-
access_log on- 记录虚拟主机的访问日志,
on启用访问日志功能。
- 记录虚拟主机的访问日志,
-
auth_basic "NginxStatus"- 启用了基本的
HTTP认证功能,设置了认证领域的标题(这里NginxStatus)。 - 将显示在用户认证时的浏览器弹出框中。
- 启用了基本的
-
auth_basic_user_file conf/htpasswd- 指定了存储用户认证信息的文件路径。
conf/htpasswd是一个位于Nginx配置文件目录中的文件,文件包含了用户名和密码。Nginx使用这个文件来验证用户的登录凭证。
-
[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload- 对
Nginx配置文件进行了修改之后,使用该命令重新加载配置。 -s reload重新加载配置文件而不中断服务。
- 对
Nginx日志(访问与错误日志管理)
error_log /var/log/nginx/error.log warn; // 配置错误日志的级别及存储目录
events { worker_connections 1024; }
http {
..................
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 /var/log/nginx/access.log main; // 配置访问日志存储目录}
-
/var/log/nginx/error.log warn/var/log/nginx/error.log指定错误日志文件的存储路径。warn日志级别,warn级别记录警告以及更严重的错误信息。
-
events { worker_connections 1024; }events模块的配置,涉及到Nginx服务器的网络连接参数。- 设置了每个工作进程可以同时处理的最大连接数为1024个。
-
HTTP模块配置-
log_format main...-
定义日志格式,日志格式使用了一些变量来记录访问请求的相关信息。
$remote_addr客户端IP地址。$remote_user用户名。$time_local访问时间。...等。
-
-
access_log /var/log/nginx/access.log main- 定义访问日志的存储路径和使用日志的格式。
- 访问日志记录每个请求的详细信息。
- 请求的
URL、响应状态码和传输字节数等。
-
http相关配置
http {
sendfile on // 高效传输文件的模式 一定要开启
keepalive_timeout 65 // 客户端服务端请求超时时间
}
-
sendfile onsendfile是一种高效的文件传输方式。
-
keepalive_timeout 65- 设置的超时时间为
65秒。
- 设置的超时时间为
静态资源配置
server {
listen 80;
server_name mingongge.com;
location /static {
root /wwww/web/web_static_site;
}
// 或
location /image {
alias /web/nginx/static/image/;
}
}
-
location /static {...}location块,用于匹配以/static开头的URL。
-
root /wwww/web/web_static_site- 指定了服务器上存储静态文件的根目录。
- 当
Nginx接收到对/static目录下文件的请求时,会在/www/web/web_static_site目录下查找并提供相应的文件。 - 通常包含
HTML、CSS、JavaScript和图像等静态资源。
-
alias /web/nginx/static/image/alias设置一个别名,将/image映射到服务器文件系统中的实际目录/web/nginx/static/image/。- 当
Nginx接收到对/image/...的请求时,会到/web/nginx/static/image/目录下寻找对应的文件。
反向代理
http {
.............
upstream product_server {
127.0.0.1:8081;
}
upstream admin_server {
127.0.0.1:8082;
}
upstream test_server {
127.0.0.1:8083;
}
server { // 默认指向 product 的 server
location / {
proxy_pass http://product_server;
}
location /product/ {
proxy_pass http://product_server;
}
location /admin/ {
proxy_pass http://admin_server;
}
location /test/ {
proxy_pass http://test_server;
}
}
}
通过使用
Nginx的upstream模块,可以定义多个后端服务器组,每个组包含一个/多个服务器。
在
server块中,可以根据不同的URL路径将请求转发到不同的upstream组。
-
upstream product_server {...}- 定义名为
product_server的upstream组。 - 包含服务器
127.0.0.1:8081。 upstream admin_server、upstream test_server两个类似。
- 定义名为
-
location / {...}- 默认的匹配所有未被其他
location配置的请求,都会被转发送到product_server。 - 下面
3个location配置相似。
- 默认的匹配所有未被其他
负载均衡
upstream server_pools {
server 192.168.1.11:8880 weight=5;
server 192.168.1.12:9990 weight=1;
server 192.168.1.13:8989 weight=6; // weigth 参数表示权值,权值越高被分配到的几率越大
}
server {
listen 80;
server_name mingongge.com;
location / {
proxy_pass http://server_pools;
}
}
-
upstream server_pools {...}- 定义一个名为
server_pools的上游服务器组,以及各服务器被分配到请求的权值。
- 定义一个名为
-
proxy_pass http://server_pools- 指明所有请求都会被反向代理到
server_pools服务器组。
- 指明所有请求都会被反向代理到
代理其他配置
proxy_connect_timeout 90; // nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; // 后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; // 连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; // 代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; // proxy_buffers缓冲区
proxy_busy_buffers_size 64k; // 高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; // 设定缓存文件夹大小
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr; // 获取客户端真实IP
-
proxy_connect_timeout 90Nginx与后端服务器建立连接超时时间为90秒。
-
proxy_send_timeout 90Nginx将数据发送给后端服务器的超时时间为90秒。
-
proxy_read_timeout 90Nginx从后端服务器读取响应的超时时间为90秒。
-
proxy_buffer_size 4kNginx用于保存用户请求头信息的缓冲区大小为4k。
-
proxy_buffers 4 32kNginx用于处理后端服务器响应数据的缓冲区数量和大小。Nginx将使用4个32k的缓冲区存储来自后端服务器的数据。
-
proxy_busy_buffers_size 64k- 后端服务器负载较高时,用于指定
Nginx在处理请求时可以使用的最大缓冲区大小。
- 后端服务器负载较高时,用于指定
-
proxy_temp_file_write_size 64kNginx在后端服务器的响应数据写入临时文件时,每个文件的大小上限。
-
proxy_set_header Host $host- 用于向后端服务器传递客户端请求中的特定信息。
Nginx将$host变量的值传递给后端服务器。$host变量通常包含客户端请求的主机名/域名。
-
proxy_set_header X-Forwarder-For $remote_addrproxy_set_header设置一个自定义的请求头X-Forwarder-For,值为$remote_addr。$remote_addr是客户端的IP地址。- 上述,后端服务器可以通过
X-Forwarder-For,获取到客户端真实的IP地址。