Linux中Nginx服务器的部署和配置
目录
Nginx是一个高性能的HTTP和反向代理服务器,该程序由俄罗斯Rambler.ru 站点开发,Nginx因为性能稳定、低系统资源消耗而闻名。默认监听端口: tcp / 80
nginx安装包官网下载地址:http://nginx.org/en/download.html
Nginx安装方式:
yum源安装
yum安装会比源码包编译安装简单的多,默认会安装许多模块,但缺点是如果以后想安装第三方模块那就没办法了。
但是默认的 yum 源很多都没有nginx包的,想安装nginx,我们可以在 /etc/yum.repos.d/ 下新建一个 nginx.repo 文件,然后加入下面的内容 (Redhat 7 和 Centos 7 中适用)
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
//如果是Centos6的系统,把baseurl中的7换成6即可
然后 yum -y install nginx 安装即可。
目录结构:
程序可执行文件: /usr/sbin/nginx
主要配置文件: /etc/nginx/conf.d/default.conf
网页主页目录:/usr/share/nginx/html/
日志文件目录:/var/log/nginx/
控制服务: systemctl start / stop / restart / status nginx
访问服务器,如果看到下面页面,说明nginx服务器搭建完成!

源码包安装
- 源码安装之前先安装编译工具: yum -y install gcc gcc-c++ make
- 源码安装包含三个源码包: nginx程序主包:nginx-xxx nginx程序依赖包 :pcre-xxx 和 zlib-xxx 百度云网盘链接:链接: https://pan.baidu.com/s/17msvtirIlbL2vXJaU-cp7Q 提取码: nq7w
- 解压,然后分别进入三个解压目录, ./configure 编译, make && make install 安装即可
目录结构:
安装完成后,nignx默认安装在 /usr/local/ 目录下
程序可执行文件: /usr/local/nginx/sbin/nginx
配置文件: /usr/local/nginx/conf/nginx.conf
网页主页目录:/usr/loca/nginx/html/
日志文件目录:/usr/local/nginx/log/
但是,当你去 /usr/local/nginx/sbin/ 下执行 ./nginx 命令运行程序时,有可能会报错
[root@Centos sbin]# ./nginx
./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
报这个错是因为我们的 libpcre 的相关库文件在 /usr/loca/lib/ 下,而nginx默认读的是 /lib64/ 下的。所以,我们只需要添加一个软链接即可解决: ln -s /usr/local/lib/libpcre.* /lib64/
解决了上面的问题,我们就可以直接启动nignx了:我们可以使用这个命令启动nginx : /usr/local/nginx/sbin/nginx ,也可以去 /usr/local/nginx/sbin/ 目录下直接 nginx 启动。但是这样未免太麻烦了。于是,我们也可以创建一个软链接: ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx ,这样,无论我们到了哪个位置,都可以直接 nginx 启动。然后停止的话,可以用 nginx -s stop 。
Nginx中支持PHP
ningx中支持php的包为 php-fpm (php fastcgi process manager) , PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。
安装php-fpm: yum -y install php-fpm
然后修改nginx配置文件: /etc/nginx/conf.d/default.conf
location / { //默认所有形式的后缀都由这里处理
root /usr/share/nginx/html; //主页目录
index index.php index.html index.htm; //在这里加上 index.php
}
// 把下面这几行的注释给取消,然后修改
location ~ \.php$ { //将后缀为 .php 的由这里处理
root /usr/share/nginx/html; //主页目录
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; //这里需要修改
include fastcgi_params;
}
修改完nginx配置文件后,开启php-fpm: systemctl start php-fpm
然后让nginx重新加载配置文件: nginx -s reload
php的配置文件: /etc/php.ini 是用来控制php解析器
/etc/php-fpm.conf是控制php-fpm守护进程的
Nginx中配置php对mysql数据库的支持
yum -y install php-mysql
Nginx配置反向代理服务器
正常代理
将外界客户端发来的请求,转发给真正提供服务的服务器。
修改nginx配置文件:/etc/nginx/nginx.conf ,在最后的 http{ } 中加入以下内容
// 下面这些代码的意思是将本机80号端口接受来的消息转发给 192.168.10.10 的 80 号端口
upstream www.xie.com{ //这里的域名随便填,但是要和下面的对应
server 192.168.10.10:80; //真正提供服务的服务器的ip地址和端口
}
server{
listen 80; // 监听80号端口发过来的消息
location /{
proxy_pass http://www.xie.com;
index index.html index.php;
}
}
根据不同端口进行转发
//这些代码的意思是将80端口接收到的信息转发给 192.168.10.10的80端口,而将接受到的 8080端口的信息转发给 192.168.10.20的8080端口
upstream www.xie.com{
server 192.168.10.10:80;
}
upstream www.xie2.com{
server 192.168.10.20:8080;
}
server{
listen 80;
location /{
proxy_pass http://www.xie.com;
index index.html index.php;
}
}
server{
listen 8080;
location /{
proxy_pass http://www.xie2.com;
index index.html index.jsp;
}
}
负载均衡
1:轮询:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
upstream www.xie.com{
server 192.168.10.10:80;
server 192.168.10.20:80;
}
server{
listen 80;
location /{
proxy_pass http://www.xie.com;
index index.html index.php index.jsp;
}
}
2:ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream www.xie.com{
ip_hash;
server 192.168.10.10:80;
server 192.168.10.20:80;
}
server{
listen 80;
location /{
proxy_pass http://www.xie.com;
index index.html index.php index.jsp;
}
}
3:weight:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream www.xie.com{
server 192.168.10.10:80 weight=10;
server 192.168.10.20:80 weight=20;
}
server{
listen 80;
location /{
proxy_pass http://www.xie.com;
index index.html index.php index.jsp;
}
}
4: fair : 按后端服务器的响应时间来分配请求,响应短的服务器优先分配
upstream www.xie.com{
server 192.168.10.10:80 weight=10;
server 192.168.10.20:80 weight=20;
fair;
}
server{
listen 80;
location /{
proxy_pass http://www.xie.com;
index index.html index.php index.jsp;
}
}
本地转发代理(基于不同后缀)
以上的反向代理的工作原理,都是根据监听不同端口,然后将流量转发到真正服务器的不同端口。
还有一种反向代理是监听80端口,然后根据请求的页面的不同后缀(.php / .jsp / 等等),来转发给不同的端口进行解析。

server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
location ~ \.php$ { //当请求的后缀是以 .php结尾的话,将流量转发给本地的800端口
proxy_pass http://127.0.0.1:800;
}
location ~ \.jsp$ { //当请求的后缀是以 .jsp结尾的话,将流量转发给本地的8080端口
proxy_pass http://127.0.0.1:8080;
}
location ~ \.(jpg|png)$ { //当请求的后缀是以 .jpg或.png 结尾的话,则请求 /img 目录下
root /img;
}
}
相关文章: Linux下Apache服务的部署和配置
Linux中Tomcat和Jboss的安装和部署
LNMP环境搭建Wordpress博客
Linux中Nginx服务器的部署和配置的更多相关文章
- Linux下Apache服务的部署和配置
目录 Apache服务的安装 yum源安装: 目录文件 源码包安装: 目录文件: Apache中添加对php的支持 Apache中添加php对mysql数据库的支持 Apache服务的高级配置 1:配 ...
- Linux中Nginx安装与配置详解
转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...
- Nginx总结(九)Nginx服务器高性能优化的配置--轻松实现10万并发访问量
前面讲了如何配置Nginx虚拟主机,如何配置服务日志等很多基础的内容,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category ...
- linux中nginx重定向方法总结
linux中nginx 301重定向跳转方法总结 第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站 复制代码代码如下: server { server_naaaaaaame www.aa ...
- linux中Nginx安装
linux中Nginx安装 编译安装 Nginx的优点太多,这里不再赘述,详情请看这篇博客深入理解nginx. Nginx的安装有rpm包安装.编译安装和docker安装.本文将介绍编译安装方 ...
- linux中nginx、mysql安装碰到的问题
服务器到期新买了一台服务器,记录一下重新安装基本环境碰到了一些问题 安装nginx 1. 启动失败 403 forbidden nginx 解决方案:(个人使用直接用了root账号,修改对应nginx ...
- Linux - CentOS6.5服务器搭建与初始化配置详解(下)
传送带:Linux - CentOS6.5服务器搭建与初始化配置详解(上) 继续接着上面的安装,安装完后会出现下面界面 点击reboot重启 重启后可以看到下面的tty终端界面 因为这就是最小化安装 ...
- Docker中Nginx服务器相关配置
工作中经常需要在服务器上来做一下实验,亲自动手看看效果是否与理论描述的相同.用docker可以很方便的配置所需要的环境,以下内容记录了如何用docker配置一个nginx服务器 下载nginx 从默认 ...
- Linux中Apache服务器的简单配置
配置Apache服务器: 1.安装Apache,可以参考Linux 中yum的配置来安装: yum install http* -y 2.修改SELinux: setenforce 0 查看: 3.防 ...
随机推荐
- HDOJ-4081(次小生成树+Prim算法)
Qin Shi Huang's National Road System HDOJ-4081 本题考查的是次小生成树的问题,这里的解决方法就是先使用Prim算法求解最小生成树. 在求解最小生成树的时候 ...
- AJAX 加载效果(遮盖层)
//创建遮罩层函数体 function createMask(){ var node=document.createElement('div'); node.setAttribute('id','ba ...
- springboot源码解析-管中窥豹系列之EnableXXX(十)
一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...
- 2019 GDUT Rating Contest I : Problem H. Mixing Milk
题面: H. Mixing Milk Input file: standard input Output file: standard output Time limit: 1 second Memory ...
- Hive数据导出的几种方式
在hive的日常使用中,经常需要将hive表中的数据导出来,虽然hive提供了多种导出方式,但是面对不同的数据量.不同的需求,如果随意就使用某种导出方式,可能会导致导出时间过长,导出的结果不满足需求, ...
- IgniteMe -高校网络信息安全运维挑战赛
1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 void *v3; // eax 4 int v4; ...
- toastr通知插件的使用
/显示一个警告,没有标题 toastr.warning('My name is Inigo Montoya. You killed my father, prepare to die!') 显示一个成 ...
- [树形DP]没有上司的晚会
没 有 上 司 的 晚 会 没有上司的晚会 没有上司的晚会 题目描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职 ...
- 【图像处理】OpenCV+Python图像处理入门教程(七)图像形态学操作
图像形态学主要从图像内提取分量信息,该分量信息通常对表达图像的特征具有重要意义.例如,在车牌号码识别中,能够使用形态学计算其重要特征信息,在进行识别时,只需对这些特征信息运算即可.图像形态学在目标视觉 ...
- C#补位函数PadLeft和PadRight
左边补位 PadLeft 用法: string str = "100"; str.PadLeft(5,'0') 输出:00100 右边补位 PadRight 用法: str.Pad ...