为什么每次进nginx都要下载vim(linux 版怎么配置nginx)

本文目录
- linux 版怎么配置nginx
- nginx部署前端纯页面
- mac下nginx配置文件无法修改
- nginx.conf是什么 怎么打开在哪里打开求大家帮帮忙 跪求啦!!!
- Nginx相关知识点
- nginx配置https
- Thinkphp5项目在nginx服务器部署
linux 版怎么配置nginx
配置Nginx服务
Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx最初是为俄罗斯门户站点而设计的网站服务软件,作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而深受信赖,但最最最被认可的是低系统资源、占用内存少且并发能力强,目前国内如新浪、网易、腾讯等门户站均在使用,市场占有份额一直保持在15-16%左右(2015年最新数据)。
Nginx程序的稳定性来自于它采用了分阶段的资源分配技术,使得CPU与内存占用率会非常低,所以使用Nginx程序部署动态网站环境不仅十分的稳定、高效,而且消耗更少的系统资源,丰富的模块功能也几乎与Apache程序数量相同,现在已经完全的支持了proxy、rewrite、mod_fcgi、ssl、vhosts等常用模块。而且还支持了热部署技术,即能够可以7*24不间断提供服务,即便运行数月也无须重启,而且还可以在不暂停服务的情况下直接对Nginx服务程序进行升级。
坦白来讲,虽然Nginx程序的代码质量非常高,代码很规范,技术成熟,模块扩展也很容易,但Nginx依然存在不少问题,比如Nginx是由俄罗斯人创建的,所以在资料文档方面还并不完善,中文教材的质量更是鱼龙混杂,但Nginx近年来增长势头迅猛,预测未来应该能够在轻量级HTTP服务器市场有不错的未来。
安装PCRE(Perl兼容的正则表达式库,解压与编译过程已省略):
# cd /usr/local/src
# mkdir /usr/local/pcre
# tar xzvf pcre-8.35.tar.gz
# cd pcre-8.35
# ./configure --prefix=/usr/local/pcre
# make
# make install
安装openssl服务程序(解压与编译过程已省略):
# cd /usr/local/src
# mkdir /usr/local/openssl
# tar xzvf openssl-1.0.1h.tar.gz
# cd openssl-1.0.1h
# ./config --prefix=/usr/local/openssl
# make
# make install
把openssl服务程序命令目录添加到环境变量中(永久生效):
# vim /etc/profile
//将配置文件最下面的参数追加参数为:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin
# source /etc/profile
安装zlib数据压缩函数库(解压与编译过程已省略):
# cd /usr/local/src
# mkdir /usr/local/zlib
# tar xzvf zlib-1.2.8.tar.gz
# cd zlib-1.2.8
# ./configure --prefix=/usr/local/zlib
# make
# make install
创建用于执行nginx服务的用户:
# cd ..
# useradd www -s /sbin/nologin
安装nginx服务程序(openssl,zlib,pcre要写成源码解压路径!!!):
# tar xzvf nginx-1.6.0.tar.gz
# cd nginx-1.6.0/
***隐藏网址***
# make
# make install
创建nginx程序脚本(将下面的参数直接复制进去即可):
# vim /etc/rc.d/init.d/nginx
#!/bin/bash
# nginx - this script starts and stops the nginx daemon
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
&& exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
&& . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2》&1 | grep "configure arguments:" | sed ’s/*\).*/\1/g’ -`
if ; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2》&1 | grep ’configure arguments:’`
for opt in $options; do
if ; then
value=`echo $opt | cut -d "=" -f 2`
if ; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
|| exit 5
|| exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
&& touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
&& rm -f $lockfile
return $retval
}
restart() {
#configtest || return $?
stop
sleep 1
start
}
reload() {
#configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status 》/dev/null 2》&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
# chmod 755 /etc/rc.d/init.d/nginx
重启nginx服务程序并添加到开机启动项:
# /etc/rc.d/init.d/nginx restart
Restarting nginx (via systemctl):
# chkconfig nginx on
此时可以通过访问IP来判断nginx服务是否顺利运行
***隐藏网址***
nginx部署前端纯页面
1.进入nginx配置文件vim .../nginx-1.9.12/conf/nginx.conf。
如上图所示:第一个红框中的内容就是应用服务器的地址;第二个红框中的内容就是前端包的位置。
此时,配置文件已经准备完毕。这个包和端口可以存在多个。
2.进入.../nginx-1.9.12/sbin 找到nginx的启动程序。
nginx -c ../nginx-1.9.12/conf/nginx.conf 启动nginx程序,并指定配置文件。
3.如果要替换包,则直接替换就行,nginx为热加载自动更新的。但是以防有缓存之类的存在,可以使用nginx -s reload命令进行重载一次。
追加 一 :
如果前端包的构造如下图
则location配置依然如下图
但是访问地址则需要指定到具体的html文件上。。
***隐藏网址***
***隐藏网址***
***隐藏网址***
追加 二:
同一个端口部署多个页面:
一个server下,多个 location。
location的作用就是是否有后缀,并且这个后缀会去拼接root后的地址。
比如第二个location /sis/。
则在访问127.0.0.1:8080/sis时,会去自动寻找/apps/svr/nginx-1.9.12/pagefile/0921/sis这个包。 (Ps:location后的地址一定要用 / 关闭,比如 location /sis/,不然访问127.0.0.1:8080/sis时,会报错,只有用127.0.0.1:8080/sis/才行。)
这样就部署好了一个 端口支持多个页面。
mac下nginx配置文件无法修改
你是把8080改成8089,但是监听的还是8080端口吗?
可能是你重新加载配置文件吧,./nginx -s reload你应该先把nginx关掉,不关掉,无法修改
nginx.conf是什么 怎么打开在哪里打开求大家帮帮忙 跪求啦!!!
Windows下用记事本打开,Linux下直接vim nginx.conf就可以打开.默认情况下此文件放在Nginx主目录的Conf文件夹下,你可以去那里面看看.
Nginx相关知识点
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
自行安装
正向代理: 代理服务器站在客户端那边就是正向代理;
反向代理: 代理服务器站在原始服务器那边就是反向代理;
详解参考点击 Nginx正向代理与反向代理
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。
Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。
并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台机器web程序iis关闭,也就是说web不能访问,那么nginx服务器分发请求还是会给这台不能访问的web服务器,如果这里的响应连接时间过长,就会导致客户端的页面一直在等待响应,对用户来说体验就打打折扣,这里我们怎么避免这样的情况发生呢。这里我配张图来说明下问题。
如果负载均衡中其中web2发生这样的情况,nginx首先会去web1请求,但是nginx在配置不当的情况下会继续分发请求道web2,然后等待web2响应,直到我们的响应时间超时,才会把请求重新分发给web1,这里的响应时间如果过长,用户等待的时间就会越长。
下面的配置是解决方案之一:
如果使用upstream指令配置了一组服务器作为被代理服务器,服务器中的访问算法遵循配置的负载均衡规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交由下一组服务器处理。
***隐藏网址***
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。
内置策略: 1.轮询;2.加权轮询;3.Ip hash;
扩展策略: 就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
eg:
开启简单的缓存配置,只需要两个指令:proxy_cache_path和proxy_cache。
proxy_cache_path: 配置缓存的存放地址和其他的一些常用配置;
proxy_cache:指令是为了启动缓存;
相关配置说明:
该指令用于定义满足条件的响应不会被保存到缓存中。在条件字符串中至少有一个条件不为空或者0,符合这样条件的响应才不会被缓存。
举例如下
其中,cookie_nocache、arg_nocache...皆为变量,可以根据你访问的匹配策略来设置,其值只有2类,0和非0;
访问匹配策略例如:
如果在此链式配置中,只要有一个值不为0,则不会cache;例如:
则不会被cache.
注:一般会配合proxy_cache_bypass共同使用;
该指令用于定义哪些情况不从cache读取,直接从backend获取资源;配置方式同proxy_no_cache。
给缓存数据定义一个键,例如
该指令用于设置缓存哪些HTTP方法,默认缓存HTTP GET/HEAD方法,不缓存HTTP POST 方法.。
设置不同响应码的缓存时间,当不指定响应码的时候,例如
只对响应码为200,301,302的访问请求资源设置缓存时间,此外可以个性化定制,例如:
此外,还可以在相应header里设置优先级更高的缓存有效时间:
不缓存包含在field的响应header,可以设置的值有:“X-Accel-Redirect”, “X-Accel-Expires”, “X-Accel-Limit-Rate”,“X-Accel-Buffering”, “X-Accel-Charset”, “Expires”, “Cache-Control”, “Set-Cookie” (0.8.44), and “Vary”。
如果上述的header field没有设置为忽略,则header filed中有“X-Accel-Expires”, “Expires”, “Cache-Control”, “Set-Cookie”, and “Vary”的话,响应会被缓存。
该指令用于设置缓存的最小使用次数,默认值为1
源站有问题时,nginx可以通过proxy_cache_use_stale指令开启容错能力,即使用缓存内容来响应客户端的请求。举例如下:
如上配置表示,当作为cache的NGINX收到源站返回error、timeout或者其他指定的5XX错误,并且在其缓存中有请求文件的陈旧版本,则会将这些陈旧版本的文件而不是错误信息发送给客户端。
使用NGINX,不需要建立一个RAID(磁盘阵列)。如果有多个硬盘,NGINX可以用来在多个硬盘之间分割缓存。举例如下:
在这份配置中,使用了3个独立的缓存,每个缓存专用一块硬盘,另外,3个独立的线程池也各自专用一块硬盘。
缓存之间(其结果就是磁盘之间)的负载均衡使用split_clients模块,split_clients非常适用于这个任务。
在 proxy_cache_path指令中设置 use_temp_path=off ,表示NGINX会将临时文件保存在缓存数据的同一目录中。这是为了避免在更新缓存时,磁盘之间互相复制响应数据。
通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;
通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。
因此,将日志好好利用,你可以得到很多有价值的信息。
打开nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf
日志部分内容:
#access_log logs/access.log main;
日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。
默认“main”日志格式:
参数明细表:
查看日志命令tail -f /usr/local/nginx/logs/access.log
打开nginx.conf配置文件去掉#注释见下图:
自定义某一个server配置的日志,使用“main”日志格式。
日志生成的到Nginx根目录logs/access.log文件,默认使用“main”日志格式,也可以自定义格式。
重新读取加载Nginx配置文件:
执行命令:nginx-s reload
网上一位老师写的log文件分解的脚本
此脚本执行时间根据自己公司情况来定,可以设置默认一天执行一次;
创建crontab设置作业
设置日志文件存放目录crontab -e
*/1 * * * * sh /usr/local/software/nginx/nginx_log.sh
此设置的为一分钟,如果设置一天自行修改;
默认的 nginx 配置文件 nginx.conf 内容如下
示例
几个常见配置项:
注意:
惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能
每个指令必须有分号结束。
进入安装目录下的sbin
nginx配置https
我的服务器使用的系统是CentOS 6,因此直接使用yum安装nginx,其它系统以及版本可能有所差异。
step1, 先要安装nginx的yum源
执行完上面的命令后,我们使用命令 yum info nginx 查看一下Nginx 软件包信息.
step2, 安装nginx, 使用命令 yum install nginx 安装,等待安装完成。
检查nginx 版本 nginx -v
这个时候我们发现nginx已经安装成功了。
使用yum安装的nginx, 默认配置文件放在 /etc/nginx/nginx.conf ,使用命令 nginx -t 可以拿到配置文件的存放路径;这个命令用于测试配置文件语法是否准确无误。
使用vim查看配置内容如下:
看最后一行 include /etc/nginx/conf.d/*.conf; 便知nginx include 了 ./conf.d/ 下面的所有配置文件,因此我们也可以将配置文件放在 ./conf.d/ 目录下。
在配置Https 之前,我们需要准备好购买的SSL证书文件,我使用的是阿里云提供的免费证书。
1、将证书文件传到服务器,我使用的是 scp 命令将证书拷贝到服务器的 /etc/nginx/ssl_certs/ 目录下面。现在该目录下有两个文件, xxx.pem 和 xxx.key 。
2、在创建配置文件 /etc/nginx/conf.d/ 目录下创建 xxx.conf 文件
将如下配置copy到配置文件中
最后重启 nginx, 使用 service nginx restart 命令重启。
***隐藏网址***
Thinkphp5项目在nginx服务器部署
1,切换到nginx的配置目录,找到nginx.conf文件
cd /usr/local/nginx/conf
vim nginx.conf
2,如果是单项目部署的话,只需要在nginx.conf文件里面加上以下
server{
listen 80;
# 域名,本地测试可以使用127.0.0.1或localhost
server_name www.zhangc.cn;
# php项目根目录
root /home/data-www/blog;
location /{
# 定义首页索引文件的名称
index index.php index.html index.htm;
# 影藏入口文件
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
try_files $uri $uri/ /index.php?$query_string;
}
# PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
# Fastcgi服务器和程序(PHP)沟通的协议
.location ~ .*\.php${
# 设置监听端口
fastcgi_pass 127.0.0.1:9000;
# 设置nginx的默认首页文件
fastcgi_index index.php;
# 设置脚本文件请求的路径
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
# 引入fastcgi的配置文件
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
}
}
3,如果多项目部署,就需要配置vhost
第一步:nginx.conf文件,在最后加上 include vhost/*.conf;
第二步:进入vhost文件夹,创建 域名.conf 文件,如创建一个:quanma.meyat.com.conf
第三步:quanma.meyat.com.conf文件,内容如下:
server
{
listen 80;
server_name quanma.meyat.com;
index index.html index.htm index.php default.html default.htm default.php;
root /data/wwwroot/default/quanma/public/;
#error_page 404 /404.html;
location / {
index index.html index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
#try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
#include fastcgi.conf;
#include pathinfo.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
# Disallow access to .ht, .svn, .bzr, .git, .hg, .cvs directories
location ~ /\.(ht|svn|bzr|git|hg|cvs) {
deny all;
}
#access_log /date/nginx/bmp.com.conf/access.log main;
}

更多文章:
sql语句优化面试(面试问到 数据库性能优化 怎么回答 我是Oracle数据库)
2025年7月30日 02:15
图片转换代码软件(求一款图片转网页代码的工具,就是可以把图片转换成网页广告的那种,)
2025年6月30日 23:30
desense(手机desense测试,中文是什么意思怎么测试)
2025年11月12日 03:00
如何使用ubuntu系统(win10安装ubuntu双系统怎么装)
2025年9月4日 20:00
sql数据库多少钱(access sql 等的数据库,开发工具多少钱运行平台多少钱)
2026年1月21日 20:15
php环境搭建的原理(什么是PHPWEB环境的搭建及其作用)
2026年8月23日 16:15
c语言一维数组有几个数(c语言的一维数组中至少要有几个元素)
2025年11月27日 13:30
1111101100101110转为16进制?将23456表为16进制数
2025年12月19日 18:30
指针变量为什么占4个地址(C语言中,为什么指针变量无论指向那个类型的变量,其所占的字节都为4个字节详解)
2025年7月27日 19:00
html5模板 支付成功(html5怎么实现支付宝实时转账)
2025年7月5日 15:45
js jquery面试(jquery中怎么调用js方法调用)
2025年8月8日 03:45










