精华内容
下载资源
问答
  • linux下nginx编译安装启动

    千次阅读 2017-02-27 11:48:04
    nginx下载地址:http://nginx.org/en/download.html ... 1、在指定目录解压包 命令:tar -zxvf nginx-1.10.3.tar.gz ...解压后,在nginx-1.10.3同级目录下,创建nginx目录(编译安装目录) ...

    nginx下载地址:http://nginx.org/en/download.html

     

    1、在指定目录解压包

    命令:tar -zxvf nginx-1.18.0.tar.gz

     

    2、编译

    nginx是需要编译安装的,在刚才解压的目录(nginx-1.18.0)下执行编译命令

    命令: ./configure --prefix=/data/nginx-1.18.0/ --with-http_ssl_module

    --prefix=/data/nginx-1.18.0/,用于指定编译路径。這里直接指定的解压目录
    --with-http_ssl_module,如果域名需要配置ssl,编译的时候要加上

     

    执行该命令可能在最后会提示错误

    如:./configure: error: the HTTP rewrite module requires the PCRE library.

    提示需要pcre库,网上找了找相关资料,两种情况的处理:

    1、可能已有相关库,依次执行命令

    yum -y install pcre-devel

    yum -y install openssl openssl-devel

    2、没有相关库

    yum -y install pcre-devel openssl openssl-devel

    命令执行完后,再执行./configure --prefix=/data/nginx-1.18.0/ --with-http_ssl_module 命令,应该就可以成功了

     

     

    3、编译后,还需要安装;

    编译命令执行成功后,在指定的编译路径(/data/nginx-1.18.0/)下,会有makefile文件

    执行安装命令:make&&make install

    安装成功后,会生成sbin等文件夹

    ./sbin/nginx -V,可查看编译版本和配置选项信息

     

     

    4、在nginx/sbin目录下,启动nginx

    命令:./nginx

    启动异常:nginx: [alert] could not open error log file: open()

    解决办法:在安装目录(/data/nginx-1.18.0/)下手动创建logs文件夹,再次启动正常。

     

     

    ---------------------------------------------------------------

    sbin目录下的常用命令

    1、启动:./nginx

    2、强制停止:./nginx -s stop

    3、处理完请求后再停止:./nginx -s quit

    4、加载文件并重启:./nginx -s reload

    5、校验nginx.conf文件语法格式:./nginx -t

    6、版本和配置选项信息:./nginx -V

    7、杀死所有nginx进程:killall nginx

     

    展开全文
  • 主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下
  • 主要介绍了Ubuntu下nginx编译安装参数配置,本文总结了一些依赖库的安装以及编码配置参数,需要的朋友可以参考下
  • nginx编译安装后用了一段时间后发现当前版本有漏洞或需要新的功能时就需要对当前nginx版本进行版本升级,但又不能影响正常的使用,所以这时就需到对nginx的平滑升级,更新到最新版本了。 本文演示的是nginx-1.13.6...
  • nginx编译安装

    千次阅读 2016-07-16 21:37:19
    nginx编译安装 =========================================== Nginx官网:http://nginx.org/ Nginx官网下载地址(选择 Stable version 稳定版):http://nginx.org/en/download.html 官网安装介绍:...
    nginx编译安装
    ===========================================
    Nginx官网:http://nginx.org/
    Nginx官网下载地址(选择 Stable version 稳定版):http://nginx.org/en/download.html
    官网安装介绍:http://nginx.org/en/linux_packages.html
    
    
    一:安装
    
    1.1:环境准备
        ~]# yum -y install gcc gcc-c++  pcre-devel  openssl-devel
    
    2.2:编译安装
        ~]# tar -axf nginx-1.10.0.tar.gz
    
        ~]# cd nginx-1.10.0/
    
        ~]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-file-aio --with-http_v2_module
    
        ~}# make && make install
    
    
    
        
    1.3:加入环境变量
            ~]# echo 'export PATH=$PATH:/usr/local/nginx/sbin/' >  /etc/profile.d/nginx.sh
            
            ~]# source /etc/profile.d/nginx.sh
    
    
    1.4:启动与重启停止
            启动:nginx
            重载:nginx -s reload
            快速停止:nginx -s stop
            有序退出:nginx -s quit
    
    1.5:加入系统服务与开机启动
    
    
    
    CentOS 7:
        ~]# vi /usr/lib/systemd/system/nginx.service
    --------------------------file start---------------------------------
    [Unit]  
    Description=nginx  
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]  
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx  
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s  stop
    PrivateTmp=true  
    
    [Install]  
    WantedBy=multi-user.target
    --------------------------file end---------------------------------
    
        开机启动
            ~]# systemctl enable nginx.service
        开机不启动
            ~]# systemctl disable nginx.service
        其他操作:
            ~]# systemcl ( status | start | stop | reload | restart ) nginx.service
    
    
        其他操作:
            ~]# service nginx (start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs)
    

     

    展开全文
  • Linux的nginx编译安装 第一步,需要得到nginx的源码包(在官网上获得最新的源码包) nginx官网下载地址:nginx下载地址 同时需要用到一个安装工具wget: yum install wget -y wget ...
  • 在linux 系统上安装gcc进行编译nginx安装文档,含有linux创建用户zlib,openssl,prce,nginx编译
  • Nginx编译安装+Lua组件

    2020-05-12 11:04:29
    自己搭建的Nginx服务,包含所有nginx的配置文件,注明了文件中的修改项。此包中包含了Nginx1.11.3和upstream组件的tar包和Lua模块包。需要编译安装。分享给需要的朋友。
  • 自动化编译安装nginx的脚本,可以自动判断当前防火墙以及网络状态
  • 下面先进行nginx编译安装,再进行nginx的WEB服务相关的应用配置:包括设置配置文件vim下语法高亮显示、配置虚拟主机、基于IP的访问控制、基于用户认证的访问控制、建立下载站点列表、URL地址重写、防盗链、Nginx状态...

    nginx(二) nginx编译安装 及 配置WEB服务

           在前面《nginx详解》文章中,我们对nginx有了一个基本的认识:包括应用场景、nginx基本架构、功能特性、并发模型以及配置说明等,我们知道nginx应用比较多的场景是WEB服务器和反向代理服务器。

           下面将先进行nginx编译安装,然后再进行nginx的WEB服务相关的应用配置:包括设置配置文件vim下语法高亮显示、配置虚拟主机、基于IP的访问控制、基于用户认证的访问控制、建立下载站点下载列表、URL地址重写/重定向、防盗链、提供Nginx状态页面、配置gzip压缩、日志、基于SSL提供https服务等。

    1、配置环境准备

    1、WEB服务器:

    主机系统:CentOS 6.4 x86_64;

    IP:192.168.18.242 (host name:node2.tjiyu.com);

    2、Client端:

    IP:192.168.18.245;

    一般浏览器;

    2、下载编译安装

           nginx官网上把最新稳定版本的源码包下载下来,我们这里使用nginx-1.10.2版本;然后把源码包放到我们操作的主机上,下面开始编译安装。

    2-1、解压,创建软连接

            [root@node2 ~]# tar xf nginx-1.10.2.tar.gz
    
            [root@node2 ~]# ln -sv nginx-1.10.2 nginx
    
            [root@node2 ~]# cd nginx
    
            [root@node2 nginx]# ll

    2-2、安装编译开发工具类库

           用yum安装、更新开发工具"Development Tools"和"Server Platform Deveopment",而nginx会依赖openssl-devel和pcre-devel类库,安装如下:

            [root@node2 nginx]# yum groupinstall "Development Tools" "Server Platform Deveopment"
    
            [root@node2 ~]# yum install openssl-devel pcre-devel

    2-3、创建用户和用户组

           分别创建名为"nginx"的用户和组,用来运行nginx的worker进程,操作如下:

            [root@node2 nginx]# groupadd -r nginx
    
            [root@node2 nginx]# useradd -r -g nginx nginx

    2-4、编译并安装

           先configure指定编译选项,如安装目录、上面创建的运行用户、需要的扩展模块(SSL、FastCGI)等,选项及参数说明:http://nginx.org/en/docs/configure.html,操作如下:

        [root@node2 nginx]# ./configure \
    
            --prefix=/usr \
    
            --sbin-path=/usr/sbin/nginx \
    
            --conf-path=/etc/nginx/nginx.conf \
    
            --error-log-path=/var/log/nginx/error.log \
    
            --http-log-path=/var/log/nginx/access.log \
    
            --pid-path=/var/run/nginx/nginx.pid \
    
            --lock-path=/var/lock/nginx.lock \
    
            --user=nginx \
    
            --group=nginx \
    
            --with-http_ssl_module \
    
            --with-http_flv_module \
    
            --with-http_stub_status_module \
    
            --with-http_gzip_static_module \
    
            --http-client-body-temp-path=/var/tmp/nginx/client/ \
    
            --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
    
            --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
    
            --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
    
            --http-scgi-temp-path=/var/tmp/nginx/scgi \
    
            --with-pcre

           Configure成功如下:

           接着开始编译并安装,如下:

    [root@node2 nginx]# make && make install

    2-5、为nginx提供SysV init服务脚本

           先创建/etc/init.d/nginx服务脚本,这基于ngInx自身提供的命令实现的,脚本内容如下:

            #!/bin/sh
    
            #
    
            # 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: /etc/sysconfig/nginx
    
            # pidfile: /var/run/nginx.pid
    
             
    
            # Source function library.
    
            . /etc/rc.d/init.d/functions
    
             
    
            # Source networking configuration.
    
            . /etc/sysconfig/network
    
             
    
            # Check that networking is up.
    
            [ "$NETWORKING" = "no" ] && exit 0
    
             
    
            nginx="/usr/sbin/nginx"
    
            prog=$(basename $nginx)
    
             
    
            NGINX_CONF_FILE="/etc/nginx/nginx.conf"
    
             
    
            [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
             
    
            lockfile=/var/lock/subsys/nginx
    
             
    
            make_dirs() {
    
                # make required directories
    
                user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
    
                options=`$nginx -V 2>&1 | grep 'configure arguments:'`
    
                for opt in $options; do
    
                    if [ `echo $opt | grep '.*-temp-path'` ]; then
    
                        value=`echo $opt | cut -d "=" -f 2`
    
                        if [ ! -d "$value" ]; then
    
                            # echo "creating" $value
    
                            mkdir -p $value && chown -R $user $value 
    
                        fi 
    
                    fi 
    
                done 
    
            }
    
            start() {
    
                [ -x $nginx ] || exit 5
    
                [ -f $NGINX_CONF_FILE ] || exit 6
    
                make_dirs
    
                echo -n $"Starting $prog: "
    
                daemon $nginx -c $NGINX_CONF_FILE
    
                retval=$?
    
                echo
    
                [ $retval -eq 0 ] && touch $lockfile
    
                return $retval 
    
            }
    
            stop() {
    
                echo -n $"Stopping $prog: "
    
                killproc $prog -QUIT
    
                retval=$?
    
                echo
    
                [ $retval -eq 0 ] && 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

           并为此脚本赋予执行权限,然后添加到系统服务管理列表,并让其开机自动启动,操作如下:

            [root@node2 nginx]# vim /etc/init.d/nginx
    
            [root@node2 nginx]# chmod +x /etc/init.d/nginx
    
            [root@node2 nginx]# chkconfig --add nginx
    
            [root@node2 nginx]# chkconfig nginx on
    
            [root@node2 nginx]# chkconfig --list nginx

    2-6、启动并访问测试

           启动nginx,我们看到因为httpd占用80端口而失败,关闭httpd后再启动nginx正常;查看网络状态,可以看到nginx正在监听80端口;用测试主机访问nginx主机的IP,可以看到nginx的欢迎页面,过程如下:

            [root@node2 nginx]# service nginx start
    
            [root@node2 nginx]# netstat -ntulp | grep nginx

    3、配置Nginx

          前面编译nginx的时候,我们用选项--conf-path=/etc/nginx/nginx.conf(默认也是这个目录),指定的了配置文件及所在目录,所以我们到/etc/nginx/下可以看到nginx.conf配置文件,而.default结尾的是nginx默认编译选项的配置文件,已经没有意义了。

          前面《nginx详解》我们已经详细分析说明nginx配置文件的几个配置区域块和大部分的配置选项,下面就不一一说明了,只说明一些用到的配置选项。

    3-1、设置配置文件vim下语法高亮显示

          linux系统下vim或者vi编辑器默认是没有对nginx配置的语法高亮设置。但是我们可以到http://www.vim.org/scripts/script.php?script_id=1886下载nginx.vim,然后根据它上面的说明,进行简单的配置,如下:

            [root@node2 ~]# mkdir .vim/syntax -pv
    
            [root@node2 ~]# cd .vim/syntax/
    
            [root@node2 syntax]# mv ~/nginx.vim ./
    
            [root@node2 syntax]# ls
    
            nginx.vim
    
            [root@node2 syntax]# cd ..
    
            [root@node2 .vim]# vim filetype.vim
    
            [root@node2 .vim]# cat filetype.vim
    
            au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/conf/* if &ft == '' | setfiletype nginx | endif
    
            [root@node2 .vim]# vim /etc/nginx/nginx.conf

    3-2、配置虚拟主机

          编辑nginx.conf,配置两个虚拟主机www.tjiyu.com和www.test.com,资源文件目录分别/data/tjiyu和/data/test,可以看到最简单的配置只需要三行,操作如下:

    [root@node2 nginx]# cp nginx.conf nginx.conf.bak
    
    [root@node2 nginx]# vim nginx.conf
                server {
    
                    listen 80;
    
                    server_name www.tjiyu.com;
    
                    location / {
    
                    root /data/tjiyu;
    
                    index index.html index.htm;
    
                    }
    
                }
    
                server {
    
                    listen 80 default_server;    #配置默认虚拟主机
    
                    server_name www.test.com;
    
                    root /data/test;
    
                }

          然后分别创建资源目录,提供index.html测试页面,然后使nginx重新加载配置,操作如下:

            [root@node2 nginx]# mkdir /data
    
            [root@node2 nginx]# mkdir /data/tjiyu
    
            [root@node2 nginx]# echo "<h1>www.tjiyu.com</h1>" > /data/tjiyu/index.html
    
            [root@node2 nginx]# mkdir /data/test
    
            [root@node2 nginx]# echo "<h1>www.test.com</h1>" >
    
            [root@node2 nginx]# service nginx reload

          在我们的测试主机上配置hosts,让访问虚拟主机名可以指向主机IP,win7 x86_64上C:\Windows\System32\drivers\etc\HOSTS添加如下两行记录,如上:

            192.168.18.242    www.tjiyu.com
    
            192.168.18.242 www.test.com

          然后访问两个访问虚拟主机,可以看到提供的测试页面;因为我们在www.test.com的listen选项配置了default_server,所以直接访问主机IP是返回的是该虚拟主机的页面,如下:

    3-3、基于IP的访问控制

          基于IP的访问控制是ngx_http_access_module模块的功能,只有允许选项allow和禁止选项deny。

          配置第二台虚拟主机只允许的192.168.18.*网段内的主机访问,但除测试主机192.168.18.244外,注意,多个规则是自上而下进行匹配的,所以不允许测试主机访问得在最上面;测试访问www.test.com可以看到返回403禁止访问页面,而访问www.tjiyu.com是正常的,过程如下:

     [root@node2 nginx]# vim nginx.conf
    
    [root@node2 nginx]# service nginx reload

         server {
    
            listen 80 default_server;
    
            server_name www.test.com;
    
            root /data/test;
    
             
    
            deny 192.168.18.244;    #不允许测试主机访问
    
            allow 192.168.18.0/24;    #只允许的192.168.18.*网段内的主机访问
    
            deny all;                #不允许其他所有外网访问
    
        }

    3-4、基于用户认证的访问控制

          基于用户认证的访问控制是ngx_http_auth_basic_module模块的功能,只有配置名称(或者off)选项auth_basic和配置文件选项auth_basic_user_file,文件由htpasswd生成,包括用户和密码。

          先创建需要用户认证的目录/data/test/admin,提供一个测试页面;然后用htpasswd生成认证文件;编辑配置文件,用location匹配/data/test/admin目录,接着在里面配置访问控制配置的名称字符串和访问控制配置的文件,过程如下:

     [root@node2 nginx]# mkdir /data/test/admin
    
    [root@node2 nginx]# echo "<h1>admin area</h1>" > /data/test/admin/index.html
    
    [root@node2 nginx]# htpasswd -c -m /etc/nginx/.htpasswd admin
    
    [root@node2 nginx]# vim nginx.conf
    
    [root@node2 nginx]# service nginx reload
        server {
    
            listen 80 default_server; #配置默认虚拟主机
    
            server_name www.test.com; #配置虚拟主机名
    
            root /data/test; #配置资源文件根目录
    
             
    
            #deny 192.168.18.244; #不允许测试主机访问
    
            allow 192.168.18.0/24; #只允许的192.168.18.*网段内的主机访问
    
            deny all; #不允许其他所有外网访问
    
             
    
            location /admin/ { #匹配基于用户认证的访问控制
    
                auth_basic "admin area"; #访问控制配置的名称字符串,或者off关闭
    
                auth_basic_user_file /etc/nginx/.htpasswd; #访问控制配置的文件,htpasswd生成,包含用户名用密码
    
            }
    
        } 

          测试访问www.test.com正常,访问www.test.com/admin/需要用户和密码认证,也就实现了目录/data/test/admin里的资源需要用户认证,如下:

    3-5、建立下载站点下载列表

          下载站点下载列表是ngx_http_autoindex_module模块的功能,有几个选项,最基本就是开关选项autoindex on | off和显示时间选项autoindex_localtime on | off。

          先创建存放下载资源的目录/data/test/download,复制一些文件进去提供测试;然后编辑配置文件,用location匹配/data/test/download目录,接着在里面配置打开下载列表功能;测试访问www.test.com/download可以看到下载列表,过程如下:

     [root@node2 nginx]# mkdir /data/test/download
    
    [root@node2 nginx]# cp /etc/nginx/* /data/test/download/
    
    [root@node2 nginx]# vim nginx.conf
    
    [root@node2 nginx]# service nginx reload
        server {
    
            listen 80 default_server;
    
            server_name www.test.com;
    
            root /data/test;
    
             
    
            location /download/ {
    
                autoindex on; #打开下载列表功能
    
                autoindex_localtime on; #显示时间
    
            } 
    
        }

    3-6、URL地址重写/重定向

          URL地址重写/重定向是ngx_http_rewrite_module模块的功能,通过正则匹配,把匹配的URL重写为指定的URL,以重写的URL来请求响应。主要应用在实现URL跳转、域名跳转、站点镜像等,比如网站改版,目录结构发生改变,但不希望不改变页面中的URL,用URL地址重写来实现。

    1、if和rewrite选项

          这里有两个比较重要的选项,if和rewrite:If在上面已经介绍过了,在很多地方都用到,这里用于检测条件是否成立;而rewrite regex replacement [flag],匹配regex正则表达式(可以省略,直接重写),以replacement重写代替,flag为标志位,主要有:

            last:一旦被当前规则匹配并重写后立即停止检查后续饿的其他rewrite的规则,而后通过重写后的规则重新发起请求;
    
            break:一旦被当前规则匹配并重写后立即停止检查后续饿的其他rewrite的规则,而后继续由nginx进行后续的操作;
    
            redirect:返回302临时重定向代码;
    
            permanent:返回301永久重定向;

          注意:当有多个rewrite规则一起使用时,可能会循环匹配,nginx最多循环10次,超出之后返回500错误;一般将rewrite写在location中时都使用break标志,或者将rewrite写if上下文中。

    2、配置

          配置www.test.com虚拟主机的当目录$root_dir/images改为$root_dir /imgs时,可以通过URL重写,让www.test.com/images/*请求还能和原来一样,不过实际变为了www.test.com/imgs/*。

          直接创建/data/test/imgs目录,放一些图片文件进去用来测试;然后配置文件;测试访问www.test.com/images/2.jpg可以正常看到刚才放到/data/test/imgs图片,过程如下:

            [root@node2 nginx]# mkdir /data/test/imgs
    
            [root@node2 nginx]# mv /root/*.jpg /data/test/imgs/
    
            [root@node2 nginx]# ls /data/test/imgs/
    
            [root@node2 nginx]# vim nginx.conf
    
            [root@node2 nginx]# service nginx reload
                server {
    
                    listen 80 default_server;
    
                    server_name www.test.com;
    
                    root /data/test;
    
                    location /images/ {
    
                        rewrite ^/images/(.*)$ /imgs/$1 break; #URL重写:让www.test.com/images/*请求还能和原来一样,不>过实际变为了www.test.com/imgs/*
    
                    }
    
                }

    3-7、防盗链

          防盗链基于是ngx_http_referer_module模块的功能,主要通过请求头部"Referer"字段识别,配置有两点:

    (1)valid_referers选项,定义合规引用

          valid_referers none |blocked |server_names|string ...
    
          none表示没有"Referer",blocked表示 "Referer" 没有没有以"http://"或"https://"开头;

    (2)($invaild_referer变量,判断不合规的引用,返回一个提示

          if ($invaild_referer) {
    
                  rewrite ^/.*$ http://www.a.com/403.html
    
          }

          下面配置当www.tjiyu.com虚拟主机页面引用www.test.com虚拟主机上的图片时,返回一个"图片仅供内部交流使用的图片"。www.test.com虚拟主机上配置location匹配图片文件,valid_referers定义合规引用,包括自己的虚拟主机名称等,然后if ($invaild_referer)判断不合规的引用,用URL地址重写返回一个提示图片,操作配置如下:

    [root@node2 nginx]# vim nginx.conf

        location ~* \.(jpg|gif|jpeg|png)$ { #匹配图片文件请求
    
            valid_referers none blocked www.test.com *.test.com; #定义合规引用,包括自己站主机等
    
            if ($invalid_referer) {
    
                rewrite ^/ http://www.test.com/imgs/a.jpg; #判断不合规的引用,用URL地址重写返回一个提示>图片
    
            }
    
        }

          然后在www.tjiyu.com虚拟主机测试页面加入图片引用,测试访问www.tjiyu.com可以看到引用的http://www.test.com/imgs/1.jpg,但返回的是我们配置http://www.test.com/imgs/a.jpg,过程如下:

    [root@node2 nginx]# vim /data/tjiyu/index.html
    
    [root@node2 nginx]# service nginx reload

    <img src="http://www.test.com/imgs/1.jpg">

    3-8、提供Nginx状态页面

          提供Nginx状态页面指的是ngx_http_stub_status_module模块的功能,还有一个可以提供更详细信息的ngx_http_status_module模块,配置都很简单,不过编译nginx时需要指定包含进来。

          可以看到的信息有:

    当下处于活动状态的总数;

    接受的总数,已经建立和处理总数,请求的总数;

    正在接受的并发请求个数,正在读取的个数或发往客户端的,长连接中的处于活动状态的值;

          配置一个location匹配访问,里面"stub_status;"就可以打开状态页面功能,注意1.7.5版本前需要"stub_status on;",然后加入用户认证和不记录日志,以防信息泄露,过程如下:

         [root@node2 nginx]# vim nginx.conf
    
         [root@node2 nginx]# service nginx reload
                location /stub_status {
    
                    stub_status; #打开状态页面功能
    
                    auth_basic "stub_status"; #访问控制配置的名称字符串,或者off关闭
    
                    auth_basic_user_file /etc/nginx/.htpasswd; #访问控制配置的文件,htpasswd生成,包含用户名用密码
    
                    access_log off; #访问不记录日志
    
                }

    3-9、配置gzip压缩

          提供gzip压缩指的是ngx_http_gzip_module模块的功能,nginx默认会附带gzip压缩的功能,而ngx_http_gzip_static_module模块是提供gzip预压缩功能,需要编译指定。

    配置选项有:

            gzip on|off
    
            gzip_buffer 使用的缓存大小
    
            gzip_comp_level 压缩的级别
    
            gzip_disable 不压缩的类型或浏览器
    
            gzip_min_length 最少压缩的大小
    
            gzip_http_version 压缩完成以后发送http的版本
    
            gzip_types:只压缩的格式

          nginx将响应报文发送至客户端之前可以启用压缩功能,这能够有效地节约带宽,并提高响应至客户端的速度。可以在http块或server块中配置,一般在http块中配置,配置如下:

             gzip on; #打开gzip压缩功能
    
            gzip_http_version 1.0; #使用1.0版本
    
            gzip_comp_level 4; #压缩级别为4
    
            gzip_min_length 64; #内容超过最少长度后才开启压缩:64k gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json; #压缩的文件类型:文本压
    
            gzip_disable msie6; #不压缩的浏览器类型:ie6不支持

    3-10、配置日志

          Nginx常用的日志分为:错误日志error_log,这是nginx核心模块ngx_core_module提供的,前面《nginx详解》已有详细的说明;http访问日志access_log,这是ngx_http_log_module模块提供的。

          这两种日志默认都是打开记录的,而我们configure配置编译的时候已经指定了日志存放的目录,我们可以看到目录下已经存在这两个日志文件,如下:

          下面就来配置http访问日志,配置选项有:

        access_log off | path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; #设置存放路径、(引用)日志格式、缓存区大小、压缩等级、缓存时间等;
    
        log_format name string ...; #定义日志格式,access_log引用
    
        open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time]; #设置日志文件缓存

          注意,默认access_log logs/access.log combined; log_format combined "...";也就是说日志格式为combined,如下:

        log_format combined '$remote_addr - $remote_user [$time_local] '
    
            '"$request" $status $body_bytes_sent '
    
            '"$http_referer" "$http_user_agent"';

          格式定义中可以使用公共变量和仅日志格式中的变量。

          典型应用配置:如果请求经过nginx反向代理服务器,后端web服务器无法直接获取到客户端真实的IP地址(因为$remote_addr获取到的是反向代理IP地址)。可以配置反向代理服务器在转发请求的http头信息中增加"x-Forwarded-For"行信息,该信息中记录客户端IP地址和客户端请求的服务器地址;而后在后端服务器就配置重新定义日志格式,增加"$http_x_forwarded_for"变量信息到格式,就如原来配置文件中存在的配置(已注释,后面介绍nginx负载均衡再配置),如下:

    3-11、配置基于SSL提供https服务

          提供基于SSL提供https服务的是ngx_mail_ssl_module模块,需要编译指定。

    1、创建CA自签证书

            [root@node2 ~]# cd /etc/pki/CA/
    
            [root@node2 CA]# ls
    
            certs crl newcerts private
    
            [root@node2 CA]# cd private/
    
            [root@node2 private]# ls
    
            [root@node2 private]# (umask 077; openssl genrsa 2048 > cakey.pem)
    
                Generating RSA private key, 2048 bit long modulus
    
                ....+++
    
                ..........................................................+++
    
                e is 65537 (0x10001)
    
                [root@node2 private]# openssl req -new -x509 -key ./cakey.pem -out ../cacert.pem
    
                You are about to be asked to enter information that will be incorporated
    
                into your certificate request.
    
                What you are about to enter is what is called a Distinguished Name or a DN.
    
                There are quite a few fields but you can leave some blank
    
                For some fields there will be a default value,
    
                If you enter '.', the field will be left blank.
    
                -----
    
                Country Name (2 letter code) [XX]:CN
    
                State or Province Name (full name) []:HZ
    
                Locality Name (eg, city) [Default City]:ZJ
    
                Organization Name (eg, company) [Default Company Ltd]:TJIYU
    
                Organizational Unit Name (eg, section) []:TEST
    
                Common Name (eg, your name or your server's hostname) []:ca.tjiyu.com
    
                Email Address []:caadmin@tjiyu.com
    
                [root@node2 private]# ll
    
                总用量 4
    
                -rw-------. 1 root root 1675 10月 20 17:18 cakey.pem
    
            [root@node2 private]# cd ..
    
            [root@node2 CA]# touch serial
    
            [root@node2 CA]# echo 01 > serial
    
            [root@node2 CA]# touch index.txt
    
            [root@node2 CA]# ll
    
                总用量 24
    
                -rw-r--r--. 1 root root 1383 10月 20 17:25 cacert.pem
    
                drwxr-xr-x. 2 root root 4096 9月 27 20:30 certs
    
                drwxr-xr-x. 2 root root 4096 9月 27 20:30 crl
    
                -rw-r--r--. 1 root root 0 10月 20 17:26 index.txt
    
                drwxr-xr-x. 2 root root 4096 9月 27 20:30 newcerts
    
                drwx------. 2 root root 4096 10月 20 17:18 private
    
                -rw-r--r--. 1 root root 3 10月 20 17:26 serial

    2、生成证书申请

            [root@node2 CA]# mkdir /etc/nginx/ssl
    
            [root@node2 CA]# cd /etc/nginx/ssl/
    
            [root@node2 ssl]# (umask 077; openssl genrsa 1024 > nginx.key)
    
                Generating RSA private key, 1024 bit long modulus
    
                ....................................................++++++
    
                ..............++++++
    
                e is 65537 (0x10001)
    
                [root@node2 ssl]# openssl req -new -key nginx.key -out nginx.csr
    
                You are about to be asked to enter information that will be incorporated
    
                into your certificate request.
    
                What you are about to enter is what is called a Distinguished Name or a DN.
    
                There are quite a few fields but you can leave some blank
    
                For some fields there will be a default value,
    
                If you enter '.', the field will be left blank.
    
                -----
    
                Country Name (2 letter code) [XX]:CN
    
                State or Province Name (full name) []:HZ
    
                Locality Name (eg, city) [Default City]:ZJ
    
                Organization Name (eg, company) [Default Company Ltd]:TJIYU
    
                Organizational Unit Name (eg, section) []:TEST
    
                Common Name (eg, your name or your server's hostname) []:www.test.com
    
                Email Address []:
    
                 
    
                Please enter the following 'extra' attributes
    
                to be sent with your certificate request
    
                A challenge password []:
    
                An optional company name []:

    3、让CA签名并颁发证书

            [root@node2 ssl]# openssl ca -in nginx.csr -out nginx.crt -days 3650
    
                Using configuration from /etc/pki/tls/openssl.cnf
    
                Check that the request matches the signature
    
                Signature ok
    
                Certificate Details:
    
                Serial Number: 1 (0x1)
    
                Validity
    
                Not Before: Oct 20 09:31:01 2016 GMT
    
                Not After : Oct 18 09:31:01 2026 GMT
    
                Subject:
    
                countryName = CN
    
                stateOrProvinceName = HZ
    
                organizationName = TJIYU
    
                organizationalUnitName = TEST
    
                commonName = www.test.com
    
                X509v3 extensions:
    
                X509v3 Basic Constraints:
    
                CA:FALSE
    
                Netscape Comment:
    
                OpenSSL Generated Certificate
    
                X509v3 Subject Key Identifier:
    
                AD:3D:C4:0D:11:A0:68:51:1B:CE:5E:45:B3:7C:A0:A8:2C:01:A8:27
    
                X509v3 Authority Key Identifier:
    
                keyid:5B:22:1A:8A:67:E6:C2:8A:CA:DA:F5:5C:97:86:76:5B:09:94:88:48
    
                 
    
                Certificate is to be certified until Oct 18 09:31:01 2026 GMT (3650 days)
    
                Sign the certificate? [y/n]:y
    
                 
    
                 
    
                1 out of 1 certificate requests certified, commit? [y/n]y
    
                Write out database with 1 new entries
    
                Data Base Updated
    
            [root@node2 ssl]# ll
    
                总用量 12
    
                -rw-r--r--. 1 root root 3736 10月 20 17:33 nginx.crt
    
                -rw-r--r--. 1 root root 635 10月 20 17:30 nginx.csr
    
                -rw-------. 1 root root 887 10月 20 17:27 nginx.key

    4、修改配置文件

          使用另外一个server配置SSL监听433端口,注意,配置如下:

            server {
    
                listen 443 ssl; #打开SSL,监听433端口
    
                server_name localhost;
    
                 
    
                ssl_certificate /etc/nginx/ssl/nginx.crt; #证书文件
    
                ssl_certificate_key /etc/nginx/ssl/nginx.key; #证书key文件
    
                 
    
                ssl_session_cache shared:SSL:1m; #所有worker进程共享会话缓存
    
                ssl_session_timeout 5m; #会话超时时间:5分钟
    
                 
    
                ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;     #支持SSL协议,从1.1.13和1.0.12版本开始支持TLSv1.1和TLSv1.2
    
                ssl_ciphers HIGH:!aNULL:!MD5; #加密方法
    
                ssl_prefer_server_ciphers on; #由服务器选择加密方法
    
                 
    
                location / {
    
                    root html;
    
                    index index.html index.htm;
    
                }
    
            }

    5、测试

          重新加载配置后,查看网络状态,可以看到nginx监听了433端口;访问可以看到警告提示,因为我们的证书不是正规机构申请的,无法认证;继续访问可以看到正常页面 ,如下:

     

     

           到这里,我们成功对nginx进行了编译安装以及配置WEB服务相关内容,后面将进行nginx的反向代理、负载均衡、后端健康检测和缓存等相关功能配置……

     

     

    【参考资料】

    1、nginx官网文档:http://nginx.org/en/docs/

    2、nginx详解:http://blog.csdn.net/tjiyu/article/details/53027619

    3、Web服务器之Nginx详解:http://freeloda.blog.51cto.com/2033581/1285722

    展开全文
  • @nginx安装及配置https ...首先安装gcc、g++ , gcc是Linux 下默认的 C/C++ 编译器,而nginx是C语言编写的 安装gcc: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++ 2、安装

    [nginx安装及nginx配置https(超详细),linux安装nginx,nginx编译安装]

    以前都是安装一个nginx简单配置一下,前段时间开发微信小程序,里面必须使用https,就研究了一下nginx如何安装配置使用https,也参考了一些资料,和大家一起分享一下。

    1、首先安装gcc、g++

    1. 首先安装gcc、g++ , gcc是Linux 下默认的 C/C++ 编译器,而nginx是C语言编写的
    2. 安装gcc:
      yum -y install gcc automake autoconf libtool make
    3. 安装g++:
      yum install gcc gcc-c++

    2、安装nginx需要的依赖模块pcre、zlib、openssl

    1. pcre的作用是让nginx支持 rewrite 功能,gzip模块需要zlib库,ssl 的功能需要openssl库

    2. 安装pcre库(这一步下载可能有点慢):
      下载:
      cd /usr/local/src
      wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz
      解压:
      tar -zxvf pcre-8.40.tar.gz
      进入目录:
      cd pcre-8.40
      编译:
      ./configure
      安装 :
      make && make install
      安装完成查看版本:
      pcre-config --version

    3. 安装zlib库:
      cd /usr/local/src
      下载:
      wget http://zlib.net/zlib-1.2.11.tar.gz
      解压:
      tar -zxvf zlib-1.2.11.tar.gz
      进入目录:
      cd zlib-1.2.11
      编译:
      ./configure
      安装:
      make && make install

    4. 安装openssl:
      cd /usr/local/src
      下载:
      wget https://www.openssl.org/source/openssl-fips-2.0.16.tar.gz
      解压:
      tar -zxvf openssl-fips-2.0.16.tar.gz
      进入目录:
      cd openssl-fips-2.0.16
      编译:
      ./config
      安装:
      make && make install
      生成动态链接库:
      ./config shared
      make clean
      make && make install
      查看版本:
      openssl version -a

    3、安装nginx

    1. 安装nginx:
      cd /usr/local/src
      下载:
      wget http://nginx.org/download/nginx-1.9.9.tar.gz
      解压:
      tar -zxvf nginx-1.9.9.tar.gz
      进入目录:
      cd nginx-1.9.9
      编译(nginx默认不支持https,安装时需要加载Https模块,–prefix:指定安装目录,–with-http_ssl_module支持HTTPS,如果这一步报错接着往下看):
      ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
      安装:
      make
      make install
      备注:#如果./configure 报错 OpenSSL library not found,说明缺失OpenSSL库( crypto是OpenSSL 加密库(lib), 这个库需要openssl-devel包 ,在ubuntu中就是 libssl-dev )
      执行下面命令:
      yum -y install openssl-devel ll
      然后重新执行
      ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
      make
      make install
    2. 启动nginx:
      cd /usr/local/nginx
      启动:
      ./sbin/nginx
      这个时候通过ip访问应该能显示:Welcome to nginx!
      如果没有的话,应该是80端口没有开放,nginx默认监听80端口。
      查看nginx版本:
      ./sbin/nginx -v

    --------如果不需要配置https的话,到这里nginx就安装完成了。

    4、nginx配置https

    首先准备好网站域名对应的ssl证书,一般是.pem和.key结尾的两个证书文件,后面配置的时候要用到。

    1. 配置https:
      进入nginx安装目录:
      cd /usr/local/nginx/conf
      创建存放https证书的文件夹:
      mkdir cert
      进入文件夹并上传证书:
      cd cert
      rz
      然后将https证书上传到cert文件里面,后面要用到,分别命名为:
      www.123.com.pem和www.123.com.key,rz是文件上传的命令,需要安装,如果没有安装,可以参考: linux安装rzsz命令

    2.编辑nginx配置文件:
    cd /usr/local/nginx/conf
    vi nginx.conf
    找到# HTTPS server模块,配置如下:
    #HTTPS server
    server {
    listen 443;
    server_name www.123.com;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate cert/www.123.com.pem;
    ssl_certificate_key cert/www.123.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    add_header Access-Control-Allow-Credentials true;
    location / {
    root html;
    index index.html index.htm;
    }
    }
    然后保存退出。
    备注:ssl_certificate 和ssl_certificate_key 对应刚刚上传的证书的文件路径。
    3. 检查配置文件是否正确,进入安装目录:
    cd /usr/local/nginx
    执行下面命令,提示success即可
    ./sbin/nginx -t
    重启nginx:
    ./sbin/nginx -s reload

    这样nginx配置https就完成了!现在就可以使用https访问自己的网站了(注意:域名需要解析到当前这台服务器ip才行!不然会找不到服务器ip)。
    转载请注明出处。

    展开全文
  • 教程使用环境Linux版本:...按需配置Nginx编译安装所需要的环境1.gcc环境 安装Nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc: yum install gcc-c++ 2.PCRE环境 PCRE(Perl
  • nginx编译安装常见报错

    千次阅读 2020-07-31 11:59:53
    编译nginx [root@iZgt88z6l1kvd7Z nginx-1.10.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8 没有报错 然后我们make [root@iZgt88z6l1...
  • Nginx编译安装和基本使用

    千次阅读 2021-02-08 12:32:46
    由于Nginx的一些模块需要依赖其他第三方库,通常有pcre库(支持rewrite模块)、zlib库(支持gzip...为了方便,在文件系统的根目录下新建Nginx_123目录,最后会把编译好的Nginx安装到此目录中。同时,在此目录中新建N
  • 1、下载nginx(linux版本) ...2、安装nginx编译环境 # yum -y install gcc-c++ # yum -y install pcre-devel openssl openssl-devel 3、配置nginx安装信息 进入nginx安装目录后,执行以下语句: # ./configu...
  • docker nginx编译安装 Dockerfile

    千次阅读 2018-09-07 15:38:27
    vi Dockerfile FROM 10.16.2.221:5000/joy/centos-ssh:7.2 RUN mkdir /home/joy/ /home/joy/software/ WORKDIR /home/joy/software...COPY nginx-1.13.1.tar.gz ngx_cache_purge-1.3.tar.gz openssl-1.1.0f.tar.gz...
  • 1.nginx.org官网下载最新版本nginx,并解压源码包。 #下载 wget http://nginx.org/download/nginx-1.17.8.tar.gz ...2.安装依赖工具 yum install gcc automake pcre-devel openssl-devel zlib-devel ...
  • nginx编译安装

    千次阅读 2015-08-17 15:45:37
    编译安装nginx
  • Nginx编译安装时常见错误分析

    万次阅读 2016-01-10 16:34:10
    本篇文章主要是关于Nginx编译安装时,可能出现的错误的解决方法。 1 Nginx启动脚本错误:env: /etc/init.d/nginx: No such file or directory 明明上传了Nginx服务控制脚本 nginx ,但是在执行 service ...
  • Linux下nginx编译安装ssl模块

    千次阅读 2019-06-23 02:29:36
    编译安装时加一个参数就好 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make nginx.conf server { listen 443 ssl; server_name 68.168.128.247; ssl_...
  • Nginx编译安装Lua模块遇到的大坑

    万次阅读 2018-08-13 10:46:17
    昨晚一直在弄Nginx安装Lua模块,一开始我是yum install nginx安装Nginx,这样的话就不需要编译安装的那么麻烦,在安装Lua模块的过程中,我想更新下Pcre的版本,结果把系统搞炸了,删除了不该删的文件(可能当时我...
  • redhat7下编译安装nginx并增加push_stream_module模块
  • 源码编译安装nginx

    2021-01-07 04:41:33
    文章目录6 软件管理6.3 源码编译安装nginx,要求能直接运行nginx命令,启动web服务,并能访问网页 6 软件管理 6.3 源码编译安装nginx,要求能直接运行nginx命令,启动web服务,并能访问网页 (/usr/local/nginx) (rm ...
  • nginx源码编译安装

    2017-01-09 14:54:51
    nginx源码编译安装;本人亲测,可以使用。nginx-1.10.2
  • nginx编译安装的一些模块 安装时,有时候上司会让我们装一些模块,或者说配置文件中会改一些 配置文件,让其达到其想要达到的目的。 指定文件存放位置 –prefix=/etc/nginx 安装文件主目录 –sbin-path=/usr/sbin/...
  • Nginx源码编译安装.md

    2021-04-07 16:21:29
    Nginx源码编译安装详解
  • nginx编译安装

    千次阅读 2021-02-09 15:56:34
    nginx是性能优越的web服务器及负载均衡器,通过编译安装nginx,会更加了解nginx.我们通过编译安装nginx更输入了解nginx nginx 1.18 操作系统 centos IP 192.168.11.140 安装步骤 下载1.18版本并且...
  • 一、安装工具及依赖 yum install -y wget make cmake gcc gcc-c++ \ yum install -y pcre pcre-devel lib zlib-devel &amp;&amp; \ openssl openssl-devel 二、下载及解压nginx wget ...
  • 编译安装nginx启动

    2019-09-18 10:23:50
    官网:nginx.org 复制安装链接 下载安装压缩包: wget https://nginx.org/download/nginx-1.16.0.tar.gz 解压压缩包: tar -xzf nginx-1.16.0.tar.gz ...编译nginx 进入刚刚解压的文件夹 cd nginx-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,106
精华内容 48,842
关键字:

nginx编译安装如何启动