nginx的安装部署以及使用
【介绍】
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/ |
2. 解压
tar zxvf pcre-8.35.tar.gz |
3. 进入安装包目录,编译安装
cd pcre-8.35 |
4. 查看版本
pcre-config --version |
·安装nginx·
1. 下载安装包
cd /usr/local/src/ |
2. 解压
tar zxvf nginx-1.6.2.tar.gz |
3. 进入安装包目录,编译安装
cd nginx-1.6.2 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 -t /usr/local/webserver/nginx/conf/nginx.conf |
使用以下命令加载配置文件并重启:
nginx -s reload |
查看一下防火墙是否关闭,如果未关闭需要关闭,否则从浏览器访问80端口可能受阻。
systemctl status 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 客户端链接超时时间(有长连接的时候,这个字段需要设置大一点) 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 } 参数off将在这个字段中禁止所有的proxy_redirect指令 proxy_redirect off; 被代理服务器返回Location字段为: http://localhost:8000/two/some/uri/ 将Location字段重写为 proxy_redirect http://localhost:8000/two/ 使用服务器的基本名称和端口,即使它来自非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; } } } |
nginx的安装部署以及使用的更多相关文章
- Nginx详细安装部署教程
一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...
- Nginx 详细安装部署教程
一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...
- Nginx详细安装部署教程(转)
一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...
- fastdfs+nginx的安装部署
原理图: fastdfs适用场景: fastdfs特别适合海量 中小文件(建议范围:4KB< file_size <500MB)为载体的在线服务. 安装系统介绍: CentOS6.6 安装 ...
- Nginx编译安装及常用命令
一个执着于技术的公众号 前言 前面我们已经了解Nginx基础入门知识,今天就带大家一起学习下Nginx编译安装部署 准备工作 一台linux机器(本次实验以CentOS 7.5为例) 到Nginx官方 ...
- 基于Containerd安装部署高可用Kubernetes集群
转载自:https://blog.weiyigeek.top/2021/7-30-623.html 简述 Kubernetes(后续简称k8s)是 Google(2014年6月) 开源的一个容器编排引 ...
- nginx 安装部署
1. 安装passenger:sudo gem install passenger 2. 找到passenger的安装目录,一般是 cd /var/lib/gems/2.0.0/gems/passe ...
- Nginx安装部署与测试
场景:项目需要部署在生产环境中,这些新的工具都需要在生产环境中去实践练习.有时间再部署一套ELK的日志分析系统,这样的系统才算具有一定的应用价值. 1 Nginx安装 用root用户安装,采用源代码编 ...
- Nginx Windows详细安装部署教程
一.Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramble ...
随机推荐
- basename与dirname命令解析【转】
本文转载自:http://blog.csdn.net/choice_jj/article/details/8766335 basename命令 语法:basename string [suffix] ...
- SQL server用到的SQL语句备份下
这是触发器用于关联条件的 -------------1-------------- set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER trigger ...
- UVALive 4671 K-neighbor substrings 巧用FFT
UVALive4671 K-neighbor substrings 给定一个两个字符串A和B B为模式串.问A中有多少不同子串与B的距离小于k 所谓距离就是不同位的个数. 由于字符串只包含a和 ...
- Word中公式和文字混排对齐的问题
全选-字体-字符间距-位置-标准-确定 段落-中文版式-文本对齐方式-居中-确定
- 洛谷P2668斗地主(搜索)noip2015
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- 能力 or say 职业 规划
2019.5.8 黑盒测试,白盒测试,接口测试,自动化测试,性能测试.. 往测试工程师发展,再是测试开发,高级测试开发.. 要是真的喜欢前端,可以再转吧.前端后端应该要清楚它们的区别 前端:广度, ...
- Ambari是啥?主要是干啥的?
简单来说,Ambari是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率. ...
- mysql简单增删改查(CRUD)
先描述一下查看表中所有记录的语句以便查看所做的操作(以下所有语句建议自己敲,不要复制以免出错): user表,字段有 id, name,age,sex:id为主键,自增,插入时可以写 NULL 或者 ...
- Python随笔-快排
def swap(arr, i, j): temp = arr[i] arr[i] = arr[j] arr[j] = temp def part(arr, beg, end): : return b ...
- fcc 响应式框架Bootstrap 练习2
text-primary 属性值使标题直接变成了红色,text-center使标题直接居中 <h2 class="text-primary text-center"> ...