阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx的安装部署以及使用

416次阅读
没有评论

共计 4454 个字符,预计需要花费 12 分钟才能阅读完成。

【介绍】

nginx 是现在互联上非常流行的高性能的 Web 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

现在很多互联网应用都使用 nginx 来作为负载均衡的使用,再高并发的情况下,使用 Nginx 来代替 Apache 是一种很不错的选择。

【安装】

·安装编译工具以及库文件·

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

·安装 PCRE·

PCRE 的作用是为了 Nginx 支持 Rewrite 功能。

1. 下载 PCRE 安装包

cd /usr/local/src/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

2. 解压

tar zxvf pcre-8.35.tar.gz

3. 进入安装包目录,编译安装

cd pcre-8.35
./configure
make && make install

4. 查看版本

pcre-config –version

·安装 nginx·

1. 下载安装包

cd /usr/local/src/
wget http://nginx.org/download/nginx-1.6.2.tar.gz

2. 解压

tar zxvf nginx-1.6.2.tar.gz

3. 进入安装包目录,编译安装

cd nginx-1.6.2
./configure –prefix=/usr/local/webserver/nginx –with-http_stub_status_module –with-http_ssl_module –with-pcre=/usr/local/src/pcre-8.35

make && make install

4. 查看 nginx 版本

/usr/local/webserver/nginx/sbin/nginx -v

5. 将 nginx 命令设置为全局

cp /usr/local/webserver/nginx/sbin/nginx /usr/bin

【配置】

vim /usr/local/webserver/nginx/conf/nginx.conf

worker_processes 2;  #设置值和 CPU 核心数一致

server {

 listen 80; #监听端口

}

【启动】

修改完成配置之后,使用以下命令检查一下配置:

nginx -c /usr/local/webserver/nginx/conf/nginx.conf

nginx  -t

使用以下命令加载配置文件并重启:

nginx -s reload

查看一下防火墙是否关闭,如果未关闭需要关闭,否则从浏览器访问 80 端口可能受阻。

systemctl status firewalld
systemctl stop firewalld

在浏览器页面上输入 IP 加端口,可以显示出以下页面即为安装成功(可能需要等待几分钟)

【配置优化】

以上的配置只是最最基本的配置,只能让 nginx 简单得跑起来,我们依然需要以下配置使 nginx 实现反向代理或者负载均衡。

设置用户

#user nobody;

工作进程数,一般设置为 cpu 核心数

worker_processes 1;

pid 文件(保证进程只有一个)

pid /run/nginx.pid;

events {

最大连接数,一般设置为 cpu*2048

 worker_connections 1024;

}

http {

开启 gzip 压缩(提高传输速率)(需要客户端浏览器和 nginx 服务器同时支持)

gzip on;

压缩最小文件大小

gzip_min_lenth 1k;

压缩申请内存(4 个 16k 的数据流)

gzip_buffers 4 16k;

http 协议版本号(不对应的话是不支持压缩的)

gzip_http_version 1.1;

如果客户端浏览器不支持,则不进行压缩

  gzip_vary on;

日志格式

log_format main

客户端 IP 客户端用户名 请求 URL

‘$remote_addr – $remote_user [$time_local] “$request” ‘

请求状态 返回给客户端的字节数 源网页(百度 -> 百度贴吧)

‘$status $body_bytes_sent “$http_referer” ‘

客户端浏览器信息 客户端 IP 地址(和 $remote_addr 差不多)

‘”$http_user_agent” “$http_x_forwarded_for”‘;

日志路径 off 代表不存储日志,后面跟着日志的位置,main 代表使用的日志格式

access_log off

access_log logs/access.log main;

客户端链接超时时间(有长连接的时候,这个字段需要设置大一点)

keepalive_timeout 65;

当配置多个 server 节点时,默认 server names 的缓存区大小就不够了,需要手动设置大一点

server_names_hash_bucket_size 512;

server 表示虚拟主机可以理解为一个站点,可以配置多个 server 节点搭建多个站点

每一个请求进来由 server_name 确定使用哪个 server

server {

站点监听端口

listen        8800;

站点访问域名,可以通过此字段判断使用哪个 server

server_name localhost;

编码格式,避免 url 参数乱码

charset utf-8;

location 用来匹配同一域名下多个 URI 的访问规则比如动态资源如何跳转,静态资源如何跳转等 location 后面跟着的 / 代表匹配规则

location / {

站点根目录,可以是相对路径,也可以是绝对路径

root html;

默认主页

index index.html;

转发后端站点地址,一般用于做软负载,轮询后端服务器

proxy_pass http://10.11.12.237:8080;

拒绝请求,返回 403,一般用于某些目录禁止访问

#deny all;

允许请求

#allow all;

给请求头中添加客户请求主机名

proxy_set_header Host $host;

给请求头中添加客户端 IP

proxy_set_header X-Real-IP $remote_addr;

将 $remote_addr 变量值添加在客户端 ”X-Forwarded-For” 请求头的后面,并以逗号分隔。

如果客户端请求未携带 ”X-Forwarded-For” 请求头,$proxy_add_x_forwarded_for 变量值将与 $remote_addr 变量相同

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

给请求头中添加客户端的 Cookie

proxy_set_header Cookie $http_cookie;

修改从被代理服务器传来的应答头中的 ”Location” 和 ”Refresh” 字段。

proxy_redirect [default | off | redirect replacement]

如果使用 ”default” 参数,将根据 location 和 proxy_pass 参数的设置来决定。

location /one/ {

proxy_pass http://upstream:port/two/;

proxy_redirect default;

}

location /one/ {

proxy_pass http://upstream:port/two/;

proxy_redirect http://upstream:port/two/ /one/;

}

参数 off 将在这个字段中禁止所有的 proxy_redirect 指令

proxy_redirect off;

被代理服务器返回 Location 字段为:http://localhost:8000/two/some/uri/

将 Location 字段重写为 http://frontend/one/some/uri/。

proxy_redirect http://localhost:8000/two/ http://frontend/one/;

使用服务器的基本名称和端口,即使它来自非 80 端口

proxy_redirect http://localhost:8000/two/ /;

浏览器对 Cookie 有很多限制,如果 Cookie 的 Domain 部分与当前页面的 Domain 不匹配就无法写入。

所以如果请求 A 域名,服务器 proxy_pass 到 B 域名,然后 B 服务器输出 Domian=B 的 Cookie,

前端的页面依然停留在 A 域名上,于是浏览器就无法将 Cookie 写入。

不仅是域名,浏览器对 Path 也有限制。

我们经常会 proxy_pass 到目标服务器的某个 Path 下,不把这个 Path 暴露给浏览器。

这时候如果目标服务器的 Cookie 写死了 Path 也会出现 Cookie 无法写入的问题。

设置 ”Set-Cookie” 响应头中的 domain 属性的替换文本,其值可以为一个字符串、正则表达式的模式或一个引用的变量

转发后端服务器如果需要 Cookie 则需要将 cookie domain 也进行转换,否则前端域名与后端域名不一致 cookie 就会无法存取

配置规则。

proxy_cookie_domain serverDomain(后端服务器域) nginxDomain(nginx 服务器域)

proxy_cookie_domain localhost .testcaigou800.com;

取消当前配置级别的所有 proxy_cookie_domain 指令

proxy_cookie_domain off;

与后端服务器建立连接的超时时间。一般不可能大于 75 秒;(只是一般情况,有些长处理可能超时时间较长)

proxy_connect_timeout 30;

}

后端服务器返回 404 时显示的页面

error_page 404 /404.html;

后端服务器返回 500 等错误的时候显示的页面

error_page  500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

当需要对同一端口监听多个域名时,使用如下配置,端口相同域名不同,server_name 也可以使用正则进行配置

但要注意 server 过多需要手动扩大 server_names_hash_bucket_size 缓存区大小

server {

listen 80;

server_name bbb.abc.com;

charset utf-8;

location / {

proxy_pass http://localhost:10001;

}

}

server {

listen 80;

server_name aaa.abc.com;

charset utf-8;

location / {

proxy_pass http://localhost:20002;

}

}

}

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4454字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7977066
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...