Nginx 安装和简单使用

nginx 特点:

  • web 服务器, 轻量级, 能处理大并发量
  • 反向代理服务器(负载均衡)

你可以轻松的在服务器上通过 Nginx 部署 HTTP 静态服务。

windows 下 Nginx 环境的安装

下载压缩包后进行解压,双击里面的 nginx.exe 即可运行

linux 下 Nginx 环境的安装

CentOS 下 yum 安装
使用 yum 来安装 Nginx
yum install nginx -y

ubuntu 下 apt-get 安装
apt-get install nginx

使用 docker 安装 nginx
请参考教程: Docker 安装 Nginx | 菜鸟教程
https://www.runoob.com/docker/docker-install-nginx.html

linux 环境手动安装 nginx
1. 从 nginx 官网下载稳定版 Stable version 安装包
http://nginx.org/en/download.html

2. 安装 Nginx 依赖,pcre、openssl、gcc、zlib(推荐使⽤ yum 源⾃动安装)

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

3. 解压 Nginx 软件包
tar -xvf nginx-1.17.8.tar

4. 进⼊解压之后的⽬录 nginx-1.17.8
cd nginx-1.17.8

5. 命令⾏执⾏./configure

6. 命令⾏执⾏ make

7. 命令⾏执⾏ make install,完毕之后在/usr/local/下会产⽣⼀个nginx⽬录

-bash: make: command not found - 解决办法
一般出现这个-bash: make: command not found提示,是因为安装系统的时候使用的是最小化mini安装,系统没有安装 make 等常用命令,直接 yum 安装即可。
yum -y install gcc make

8. 进入/usr/local/nginx/sbin, 键入 ./nginx 即可启动默认80端口的nginx.

mac下 nginx 的使用

分别执行下面这两行命令,就会自动安装nginx,等待安装完成即可

brew install nginx

其他命令

  • brew search nginx
  • brew remove nginx

mac 下一些重要文件的路径

核心安装目录 /usr/local/Cellar/nginx/x.y.z
启动文件在该目录的bin下面
欢迎页面在html下面

Docroot (服务器默认路径): /usr/local/var/www

The default port has been set in `/usr/local/etc/nginx/nginx.conf`to 8080 so that
nginx can run without sudo.

nginx will load all files in `/usr/local/etc/nginx/servers/`

To have launchd start nginx now and restart at login:
  `brew services start nginx`
Or, if you don't want/need a background service you can just run:
  `nginx`

其他命令:

brew services restart nginx 重启 nginx 服务
brew services stop nginx 停止nginx服务.

mac 安装过程中遇到的问题
$ brew install pcre
发现

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink .
/usr/local/opt is not writable.

然后试试brew link pcre 也不行

Error: Could not symlink .
/usr/local/opt is not writable.

使用$ sudo chown -R $(whoami):admin /usr/local发现还是没用, 最终手动创建/user/local/opt 文件夹解决了(Mac High Sierra 中不能改变/usr/local的拥有者的问题)

常用命令

Nginx 让新的配置生效 nginx -s reload
关闭命令: nginx -s stop
运行以下命令查看 Nginx 版本。nginx -v

如果是通过包管理器进行安装

运行以下命令启动 Nginx 服务。
systemctl start nginx = service nginx restart
运行以下命令设置 Nginx 服务开机自启动。
systemctl enable nginx
运行以下命令设置 Nginx 禁止开机自启。
systemctl disable nginx
停止服务
systemctl stop nginx

配置文件所在目录

  • 配置文件 /etc/nginx
  • 网页存放文件 /usr/share/nginx/html

教程

如何在 linux 下 安装多个 nginx

./configure --prefix=/home/work/nginx2 ..... // 第二个nginx的安装配置, 用于指定安装目录
make && make install

./configure --prefix=/home/work/nginx3 ..... // 第三个nginx的安装配置
make && make install

功能演示

nginx 反向代理

这里用到了关键字 proxy_pass

server {
    listen 9000;
    server_name  localhost;

    location /risk_pdf {
        proxy_pass https://ebt.oss-cn-beijing.aliyuncs.com/PDF_SC;
    }
}

nginx 禁止限制某个 IP 地址或网段访问服务器 - 不要学我说话 - 博客园

https://www.cnblogs.com/hmycl/p/14416350.html

Nginx 下安装 SSL 证书

  1. 申请证书 todo

  2. 安装证书

首先找到Nginx 配置目录.例如我的目录在/etc/nginx

在证书控制台下载Nginx版本证书。下载到本地的压缩文件包解压后包含:

.crt文件:是证书文件,crt是pem文件的扩展名。
.key文件:证书的私钥文件(申请证书时如果没有选择自动创建CSR,则没有该文件)。

友情提示: .pem扩展名的证书文件采用Base64-encoded的PEM格式文本文件,可根据需要修改扩展名。

  1. 放置 crt 证书文件和 key 私钥文件并打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件. 将其修改为 (以下属性中 ssl 开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :
    /etc/pki/nginx/private/www.abc.com.key
    /etc/pki/nginx/server/www.abc.com.crt.pem
server {
 listen 443;
 server_name localhost;
 ssl on;
 root html;
 index index.html index.htm;

 ssl_certificate   cert/a.pem;
 ssl_certificate_key  cert/a.key;
 ssl_session_timeout 5m;
 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;

 location / {
     root html;
     index index.html index.htm;
 }
}

2. 重启 Nginx 服务
进入 nginx 可执行目录下,输入命令./nginx -s reload 即可.

301 重定向

301 重定向是很常见的需求,比如访问 nowamagic.net,自动跳到 www.nowamagic.net。或者倒过来,访问 www.nowamagic.net 跳到 nowamagic.net。Nginx 中配置 301 重定向(301 redirect)很容易,下面介绍下方法。

单独为不带 www 的 URL 单独设一条 server 规则:

server {
    server_name  nowamagic.net;
    rewrite ^(.*) http://www.nowamagic.net$1 permanent;
}

nginx -s reload 即可。Nginx 的 301 配置还是很简单的。

记录

如何将 nginx 添加到全局变量中(环境变量)

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

nginx在windowns下路径

实测有效

报错总结

使用 windows 版本的 nginx 启动时遇到(1113: No mapping for the Unicode character exists in the target multi-byte code page)这个错误

解决:路径里面包含有中文的缘故

解决有缓存的问题

add_header Cache-Control no-store;

location / {
    root   html;
    index  index.html index.php;

    # 禁止缓存,每次都从服务器请求
    add_header Cache-Control no-store;
}

遇到的问题

nginx reload 与 restart 的区别

reload --重新加载,reload 会重新加载配置文件,Nginx 服务不会中断。而且 reload 时会测试 conf 语法等,如果出错会 rollback 用上一次正确配置文件保持正常运行。

restart --重启(先stop后start),会重启 Nginx 服务。这个重启会造成服务一瞬间的中断,如果配置文件出错会导致服务启动失败,那就是更长时间的服务中断了。
所以,如果是线上的服务,修改的配置文件一定要备份。为了保证线上服务高可用,最好使用 reload。

还有一点,reload 只是重新加载配置文件,不会清理 nginx 的一些缓存,在有些需要清理缓存的场景需要 restart ,例如 upstream 后端配置的集群服务地址是域名而不是 ip,当后端 IP 变了,就需要清除该域名的解析缓存,此时需要重启而不是 reload。

参考

《 http状态码301和302详解及区别——辛酸的探索之路》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341