Linux 下Nginx 的安装及负载均衡的简单配置

安装Nginx之前,必须解决依赖的问题,所以要首先安装上:pcre-x.x.x.tar.gz 和pcre-devel-x.x.x.rpm这两个包。

1.安装pcre-x.x.x.tar 

tar zxvf pcre-x.x.x.tar.gz 
cd pcre-x.x.x
./configure
make && make install


2.安装pcre-devel-x.x.x.rpm

rpm -ivh pcre-devel-x.x.x.rpm


3.安装好依赖之后就安装nginx-x.x.x.tar.gz

tar zxvf nginx-x.x.x.tar.gz
cd nginx-x.x.x
./configure --with-http_stub_status_module --prefix=/usr/local/nginx --with-debug  --with-http_sub_module 
make && make install


这里要注意的是:编译的时候,nginx有很多模块可以编译的,但是对于一个用来进行转发的负载均衡nginx来说,以上两个足够了。

安装好之后,nginx的默认安装路径是:/usr/local/nginx/

4.修改配置文件

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

要进行转发,就要把转发的服务器列表列出来;如下:

http{
       .
       .  
       .
 upstream Servers {
      
         server ip地址:端口 weight=10;(权值,表明转发的优先权,相等的时候就是均衡转发)
         server ip地址:端口 weight=10;
                }

server{
  .  
  .
   location / {
            proxy_pass        http://Servers;
            root   html;
            index  index.html index.htm;
        }

}}

最后做点小小的优化;

a。查看一下服务器的cpu核心数

cat /proc/cpuinfo

然后再nginx的配置文件里面的开头处,加上:

worker_processes  4;(这里取值可以是跟核心数一样,也可以是核心数的2倍,看需要)


b。接着在下面加上工作的连接数配置

events {
    worker_connections  102400;(这里也是看情况修改)
}


下面是完整的修改后的配置文件:

#user  nobody;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  102400;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

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

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    #设定负载均衡列表
    upstream Servers {
       
         server ip地址:端口 weight=10;
         server ip地址:端口 weight=10;
                }

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass        http://Servers;
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass        http://Servers;
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


配置文件弄好之后,可以先测试一下是否配置正确:

/usr/local/nginx/sbin/nginx -t

如果有错,会告诉你哪句有错的,很人性化。

接着是启动:

/usr/local/nginx/sbin/nginx 

如果遇到需要切换转发服务器的时候,可以用重新加载命令进行无缝切换:

先修改好配置文件,然后执行以下命令,就完成了切换。出问题的服务器可以抽出来修理了,弄好了还可以这样放回去。

/usr/local/nginx/sbin/nginx -s reload

最后附上nginx的编译参数表:

--prefix=<path> - Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。
 
--sbin-path=<path> - Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为<prefix>/sbin/nginx。
 
--conf-path=<path> - 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为<prefix>/conf/nginx.conf。
 
--pid-path=<path> - 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 <prefix>/logs/nginx.pid。
 
--lock-path=<path> - nginx.lock文件的路径。
 
--error-log-path=<path> - 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 <prefix>/logs/error.log。
 
--http-log-path=<path> - 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 <prefix>/logs/access.log。
 
--user=<user> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。
 
--group=<group> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。
 
--builddir=DIR - 指定编译的目录
 
--with-rtsig_module - 启用 rtsig 模块
 
--with-select_module --without-select_module - 允许或不允许开启SELECT模式,如果 configure 没有找到更合适的模式,比如:kqueue(sun os),epoll (linux kenel 2.6+), rtsig(实时信号)或者/dev/poll(一种类似select的模式,底层实现与SELECT基本相 同,都是采用轮训方法) SELECT模式将是默认安装模式
 
--with-poll_module --without-poll_module - 允许或不允许开启POLL模式,如果没有更合适的模式,则可以开启。
 
--with-http_ssl_module - 开启HTTP SSL 模块,使Nginx可以支持HTTPS请求,这个模块需要已经安装OPENSSL,在Debian系统上是libssl
 
--with-http_realip_module - 启用 ngx_http_realip_module
 
--with-http_addition_module - 启用 ngx_http_addition_module
 
--with-http_sub_module - 启用 ngx_http_sub_module
 
--with-http_dav_module - 启用 ngx_http_dav_module
 
--with-http_flv_module - 启用 ngx_http_flv_module
 
--with-http_stub_status_module - 启用 "server status" 页
 
--without-http_charset_module - 禁用 ngx_http_charset_module
 
--without-http_gzip_module - 禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。
 
--without-http_ssi_module - 禁用 ngx_http_ssi_module
 
--without-http_userid_module - 禁用 ngx_http_userid_module
 
--without-http_access_module - 禁用 ngx_http_access_module
 
--without-http_auth_basic_module - 禁用 ngx_http_auth_basic_module
 
--without-http_autoindex_module - 禁用 ngx_http_autoindex_module
 
--without-http_geo_module - 禁用 ngx_http_geo_module
 
--without-http_map_module - 禁用 ngx_http_map_module
 
--without-http_referer_module - 禁用 ngx_http_referer_module
 
--without-http_rewrite_module - 禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。
 
--without-http_proxy_module - 禁用 ngx_http_proxy_module
 
--without-http_fastcgi_module - 禁用 ngx_http_fastcgi_module
 
--without-http_memcached_module - 禁用 ngx_http_memcached_module
 
--without-http_limit_zone_module - 禁用 ngx_http_limit_zone_module
 
--without-http_empty_gif_module - 禁用 ngx_http_empty_gif_module
 
--without-http_browser_module - 禁用 ngx_http_browser_module
 
--without-http_upstream_ip_hash_module - 禁用 ngx_http_upstream_ip_hash_module
 
--with-http_perl_module - 启用 ngx_http_perl_module
 
--with-perl_modules_path=PATH - 指定 perl 模块的路径
 
--with-perl=PATH - 指定 perl 执行文件的路径
 
--http-log-path=PATH - 指定http默认访问日志的路径
 
--http-client-body-temp-path=PATH - 指定http客户端请求缓存文件存放目录的路径
 
--http-proxy-temp-path=PATH - 指定http反向代理缓存文件存放目录的路径
 
--http-fastcgi-temp-path=PATH - 指定http fastcgi缓存文件存放目录的路径
 
--without-http - 禁用 HTTP server
 
--with-mail - 启用 IMAP4/POP3/SMTP 代理模块
 
--with-mail_ssl_module - 启用 ngx_mail_ssl_module
 
--with-cc=PATH - 指定 C 编译器的路径
 
--with-cpp=PATH - 指定 C 预处理器的路径
 
--with-cc-opt=OPTIONS - Additional parameters which will be added to the variable CFLAGS. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-cc-opt="-I /usr/local/include". If we are using select() and it is necessary to increase the number of file descriptors, then this also can be assigned here: --with-cc-opt="-D FD_SETSIZE=2048".
 
--with-ld-opt=OPTIONS - Additional parameters passed to the linker. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-ld-opt="-L /usr/local/lib".
 
--with-cpu-opt=CPU - 为特定的 CPU 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
 
--without-pcre - 禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在 "location" 配置指令中的正则表达式也需要 PCRE 。
 
--with-pcre=DIR - 指定 PCRE 库的源代码的路径。
 
--with-pcre-opt=OPTIONS - 设置PCRE的额外编译选项
 
--with-md5=DIR - 设置MD5库的源代码路径
 
--with-md5-opt=OPTIONS - 设置MD5库的额外编译选项
 
--with-md5-asm - 使用MD5汇编源码
 
--with-sha1=DIR - 设置sha1库的源代码路径
 
--with-sha1-opt=OPTIONS - 设置sha1库的额外编译选项
 
--with-sha1-asm - 使用sha1汇编源码
 
--with-zlib=DIR - 设置zlib库的源代码路径
 
--with-zlib-opt=OPTIONS - 设置zlib库的额外编译选项
 
--with-zlib-asm=CPU - zlib针对特定CPU的优化,合法的值为: pentium, pentiumpro
 
--with-openssl=DIR - 设置OpenSSL库的源代码路径
 
--with-openssl-opt=OPTIONS - 设置OpenSSL库的额外编译选项
 
--with-debug - 启用调试日志
 
--add-module=PATH - 添加一个在指定路径中能够找到的第三方模块
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃鸳鸯锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值