Nginx 介绍就不在这里写了,既然你看到这篇文档, 应该对已经nginx 有了了解。
安装工具:Homebrew (Macos 下安装nginx)
先安装 Homebrew,只需要打开终端,输入如下一行代码即可
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
使用 Homebrew 安装 Nginx,常用命令:
1. brew搜索软件命令: brew search nginx
2. brew安装软件命令: brew install nginx
3. brew卸载软件命令: brew uninstall nginx
nginx -v 验证 nginx 是否安装成功, 若显示版本信息则证明安装成功。
1.在终端输入如下命令:(这里可以看到nginx的安装目录)
查询本机nginx情况
brew info nginx
图1:
- Not installed — nginx在本地还未安装
- From — nginx的下载地址
- /usr/local/var/www — Docroot默认路径 8080
- 为 /usr/local/etc/nginx/nginx.conf 配置文件中被配置的默认端口,nginx运行时不需要加sudo nginx将在/usr/local/etc/nginx/servers/目录中加载所有文件 可以通过最简单的命令 ‘nginx’ 来启动nginx。
2.若是没有安装,正式开始安装
brew安装软件命令: brew install nginx
图2:
会显示安装目录在: /usr/local/Cellar/nginx
验证 Nginx 是否安装成功, 若显示版本信息则证明安装成功。
nginx -v
3.在安装号后可以再次查看nginx 信息,再次执行
brew info nginx
图3:
可以看到安装目录是在: /usr/local/Cellar/nginx 下, 在图2(安装时候的) 中图也可以看到
因此:
/usr/local/Cellar/nginx // 这个才是nginx被安装到的目录
/usr/local/etc/nginx/ // 这个是nginx 的配置路径
4.启动nginx,终端输入如下命令:
nginx
5.打开浏览器访问:localhost:8080看是否安装成功
可以正常访问,因此安装成功。
配置相关信息
1.查看安装信息,打开安装目录:
open /usr/local/Cellar/nginx //其实这个是nginx被安装到的目录
会看到一个以当前安装的nginx的版本号为名称的文件夹,这个就是我们安装的nginx根目录啦。进入1.15.12/bin 目录,会看到nginx的可执行启动文件。
同样的,我们在1.15.12/目录下还可以看到一个名字为html的快捷方式文件夹,进入该目录后,它有两个文件50.html和index.html,如图所示。进入该目录我们会发现其实它指向的就是/usr/local/var/www目录(如上图 箭头,点击html 文件夹,文件头 显示 www),这个在上面我们查看的info信息中有提到(Dcroot)
2.查看nginx配置目录, 如下命令:
open /usr/local/etc/nginx/
如图:
打开nginx目录后,可以看到我们上面的使用 brew info nginx 查看信息所说的 server目录以及nginx.conf的配置文件,详细配置如下 。
3.了解一下nginx的配置文件(/usr/local/etc/nginx/nginx.conf)
# 在配置文件的顶级main部分,代表worker角色的工作进程的个数
worker_processes 1;
# 错误日志
error_log /usr/local/var/log/nginx/error.log warn;
# 进程文件
pid /usr/local/var/run/nginx.pid;
events {
# 写在events部分。每一个worker进程能并发处理(发起)的最大连接数
worker_connections 256;
}
http {
# 文件扩展名与文件类型映射表
include mime.types;
# 设定默认文件类型
default_type application/octet-stream;
# 为Nginx服务器设置详细的日志格式
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 路径
access_log /usr/local/var/log/nginx/access.log main;
# 如果port_in_redirect为off时,那么始终按照默认的80端口;如果该指令打开,那么将会返回当前正在监听的端口。
port_in_redirect off;
# 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
sendfile on;
# 配置信息文件夹,/usr/local/etc/nginx/servers/*.conf
include servers/*.conf;
}
配置文件中有很多#, 开头的表示注释内容,我们去掉所有以 # 开头的段落,精简之后的 内容如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
简写配置为
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name m.lu.com;
# 这些子系统信息 可以集中配置在这里, 也可以单文件系统配置在 servers 文件夹
location /h5-market/ {
proxy_pass http://127.0.0.1:8901/h5-market
proxy_set_header Host $http_host
}
location /h5-lumkt/ {
proxy_pass http://127.0.0.1:8981/h5-lumkt
proxy_set_header Host $http_host
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
或简写配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name m.lu.com;
# 这些子系统信息 可以集中配置在这里, 也可以单文件系统配置在 servers 文件夹
#location /h5-market/ {
# proxy_pass http://127.0.0.1:8901/h5-market
# proxy_set_header Host $http_host
#}
#location /h5-lumkt/ {
# proxy_pass http://127.0.0.1:8981/h5-lumkt
# proxy_set_header Host $http_host
#}
location /images/ {
alias /Users/www/test/;
}
# 配置信息文件夹,/usr/local/etc/nginx/servers/*.conf
# 在servers 文件夹下建 xxx.conf 也可, 如下(在servers文件夹下建 h5-market.conf 配置)
include servers/*.conf;
}
}
在servers 文件夹下建 h5-market.conf 配置
# 虚拟主机配置
server {
# 监听端口
listen 80;
# 域名设定,可以有多个
server_name m.lu.com;
location /h5-market/ {
proxy_pass http://127.0.0.1:8901/h5-market
proxy_set_header Host $http_host
}
}
nginx 配置文件有三部分组成
第一部分:全局块
从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。 比如上面第一行配置的:
worker_processes 1;
这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是 会受到硬件、软件等设备的制约。
第二部分:events块 比如上面的配置: events { worker_connections 1024; } events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否 允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。 上述例子就表示每个 work process 支持的最大连接数为 1024. 这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
第三部分:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
需要注意的是:http 块也可以包括 http全局块、server 块。
http全局块 http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。 server 块 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了 节省互联网服务器硬件成本。 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。 而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。 全局 server 块 最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。 location 块 一个 server 块可以配置多个 location 块。 这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称 (也可以是IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。 地址定向、数据缓 存和应答控制等功能,还有许多第三方模块的配置也在这里进行
Nginx 反向代理 配置实例
实现效果
实现效果:使用 nginx 反向代理(把一个端口映射到另一个端口上),根据访问的路径跳转到不同端口的服务中 nginx 监听端口为 9001, 访问 http://127.0.0.1:8080/h5-market/ 直接跳转到 127.0.0.1:8901/h5-market/ 访问 http://127.0.0.1:9000/h5-lumkt/ 直接跳转到 127.0.0.1:8981/h5-lumkt/
总结nginx常见的配置
nginx的配置文件路径:/usr/local/etc/nginx/nginx.conf
nginx的服务器默认路径:/usr/local/var/www
nginx的安装路径:/usr/local/Cellar/nginx/1.15.5
Nginx 启动命令是:
-
nginx
或sudo nginx
Nginx 重启命令是:
- 1.
sudo nginx -s reload
重新配置后都需要进行重启操作 - 2.通过brew,brew services start nginx(启动nginx) brew services restart nginx(重启命令)
- 3.先进入bin目录:cd /usr/local/Cellar/nginx/1.15.5/bin/, 然后再执行:./nginx -s reload
ps:
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第2 天,点击查看活动详情