Nginx安装与配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx安装与配置相关的知识,希望对你有一定的参考价值。

知识点:

1、nginx需要linux2.6及以上内核支持(uname -a查看linux内核版本)

2、pcre包,用于nginx rewrite重写功能。

3、其实安装mysql最耗时间且最耗内存。有可能安装mysql需要30min左右。

4、一旦nginx配置上虚拟主机,一般就不能用ip来访问web服务了,而要用每个虚拟主机网站的的相应域名来访问。常用虚拟主机模式:通过linux服务器的同一个ip同一个端口,用不同的域名去访问不同的网站,而用域名访问web服务器,就又涉及到dns,或者配置本机(非web服务器)/etc/hots文件帮你解析域名。

在我的mac上:vim /etc/hosts

192.168.1.10 www.baidu.com

192.168.1.10 www.sina.com

5、--with-http_stub_status_module,编译安装nginx时的这个选项用于开启nginx自身监控,需要在nginx配置文件里配置,下面仅配置打开了www.baidu.com这个虚拟主机的自身监控,然后在浏览器里输入www.baidu.com/status

6、nginx配置文件里常用到nginx变量,我们可以配置nginx日志,比如想知道$request_filename是啥,就把nginx日志那里就配置仅打印我们想知道的变量。

7、304状态码:说明是缓存返回给用户结果。


解压编译安装pcre,供nginx安装时使用

tar xf pcre..tar.gz

cd pcre.../

./configure && make && make install


一、编译安装nginx

tar xf nginx-...tar.gz

cd nginx..../

./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install


(安装完后会在/usr/local/nginx/下自动产生4个目录:conf html logs sbin

html目录是nginx本身默认的网页文件存放路径,但生产环境,比如nginx配置php服务的虚拟主机后,用的都是php服务的web页面所在路径,比如/usr/local/php/web/index.php)


二、修改nginx配置文件,配置虚拟主机

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

http{

    全局配置。。。。。

    server{

            listen 80;

              server_name www.baidu.com 

            access_log logs/baidu.access.log main;

            location / {

                    if ($request_filename ~ "index.html") {       --请求文件如果匹配index.html就重定向到test.html

                            rewrite .* /test.html;

                    }

                    root /usr/local/php/web/baidu;

                    index index.html;

            }

            location /status {----打开nginx自身监控

                    stub_status on;

            }

    }

    server{

            server_name www.sina.com

            access_log logs/sina.access.log main;

            location / {

                    autoindex on; ----打开列表页显示,即如果根目录/usr/local/php/web/sina下没有index.html文件,就列出根目录的文件列表,即根目录下所有的文件名列表。一般用于测试或者用于下载页。

                    root /usr/local/php/web/sina;

                    index index.html;

            }

    }

}


三、启动nginx(启动nginx后会在nginx安装目录下多出几个目录,----安装nginx时只有conf、html、logs、sbin4个目录)

启动:/usr/local/nginx/sbin/nginx

重启nginx:

1、pkill nginx

2、/usr/local/nginx/sbin/nginx

重新加载服务:常用reload重加载,因为重启nginx会造成已有用户断连。

pkill -HUP nginx   --给nginx传递HUP信号,把配置文件中新修改的东西加载到正在运行的nginx的进程中,但nginx进程不会关闭,保证nginx持续为用户提供服务。


四、nginx日志切割:

每天凌晨0点切割,但是当改变日志名字后,nginx不会自动生成新的baidu.access.log,那nginx服务生成的新日志就没地方打印了,又不能重启ningx服务,这时候可以用老办法,通过HUP平滑重启,也会生成新的日志文件,但是还有更好的办法,即ningx提供了一个专用来生成新日志的信号:pkill -USR1 nginx

这样消耗的系统资源也最小。

1、可以写个脚本:比如脚本里写mv日志文件到新目录,然后pkill -USR1 nginx

2、通过logrotate结合corn轮询日志(常用)

nginx日志轮询

cat /etc/logrotate.d/nginx                ----nginx的logrotate配置文件

/usr/local/nginx/logs/nginx/*.log

{

daily

rotate 30

missingok

compress

notifempty

dateext    ---以日期添加后缀

sharedscripts

postrotate

if [ -f /var/run/nginx.pid ]; then

kill -USR1 `cat /var/run/nginx.pid`

fi

endscript

}


配置日志轮询计划任务

00 00 * * * root /usr/sbin/logrotate -f /etc/logrotate.d/nginx    (-f指定轮询的配置文件)


五、nginx用于负载均衡+反向代理:--此时架构:浏览器---》nginx(代理层)---》后端nginx

配置nginx代理层:

cat /usr/local/nginx/conf/conf.d/upsteam.conf

upstream nginx_backend {

      server 192.168.1.10:80 weight=1 max_fails=2 fail_timeout=30s;

      server 192.168.1.20:80 weight=1 max_fails=2 fail_timeout=30s;

      server 192.168.1.30:80 weight=1 max_fails=2 fail_timeout=30s;

}



cat /usr/local/nginx/conf/conf.d/baidu.http.conf

server {

     listen       80;

     server_name  www.baidu.com;

     access_log   /usr/local/nginx/logs/www.baidu.com.http.log www;

     error_log  /usr/local/nginx/logs/www.baidu.com.error.log error;

     charset         utf-8;


--------------------------baidu.https.conf----------------------

     listen       443;

     ssl on;

     server_name  www.baidu.com;

     access_log   /usr/local/nginx/logs/www.baidu.com.https.log www;

     error_log   /usr/local/nginx/logs/www.baidu.com.error.log crit;

     charset         utf-8;


     ssl_certificate /usr/local/nginx/conf/sslkey/new/inke.cn.cer;

     ssl_certificate_key /usr/local/nginx/conf/sslkey/new/inke.cn.key;

     ssl_session_timeout 5m;

     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

     ssl_ciphers ALL:!ADH:!EXPORT56:-RC4+RSA:+HIGH:+MEDIUM:!EXP;

     ssl_prefer_server_ciphers on;)))

--------------------------baidu.https.conf----------------------


     # errors page

     error_page 404 /404.html;

     error_page 500 /50x.html;


     # deny access hidden file like .git .svn

     location = / {

        deny all;

    }

    location /banner/index.php {

        set $ip_limit_num "5";

        set $ip_limit_interval "60";

        access_by_lua_file lua/access_limit.lua;

        return 403;


     location /phpmyadmin {

        return 403;

        }


     location / {

         proxy_pass  http://nginx_backend;

         proxy_ignore_client_abort on;

         proxy_redirect     off;

         proxy_set_header   Host             $host;

         proxy_set_header   X-Real-IP        $remote_addr;

         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

         proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

    }


}


六、nginx rewrite

rewrite 指令末尾有4种flag标记

last:表示完成rewrite,浏览器地址栏url不变。

break:本条规则匹配完成,终止匹配,不再匹配后面的规则,浏览器地址栏url不变。

redirect:返回302临时重定向,浏览器地址栏会显示跳转后的url。

permanent:返回301永久重定向,浏览器地址栏会显示跳转后的url。


未完待续




本文出自 “nginx” 博客,请务必保留此出处http://bajiebushizhu.blog.51cto.com/13206038/1960996

以上是关于Nginx安装与配置的主要内容,如果未能解决你的问题,请参考以下文章

nginx学习与配置-安装与启动关闭管理

nginx安装和常见的配置

配置LANMP环境-- 安装NGINX与配置

Nginx 安装与配置教程

Nginx安装与配置

Nginx 的安装与配置