Linux中阶—WEB服务器nginx(七)

Nginx 的常用命令和配置文件

nginx 的安装

进入 nginx 官网,下载

nginx news

第一步,安装 nginx依赖包
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

第二步,安装 nginx

1、解压缩 nginx-xx.tar.gz 包。

2、进入解压缩目录,执行./configure。

3、make && make install

第三步,开放nginx的80端口

查看开放的端口号

1

firewall-cmd --list-all

设置开放的端口号

1

firewall-cmd --add-service=http –permanent

2

firewall-cmd --add-port=80/tcp --permanent

重启防火墙

1

firewall-cmd –reload

备注:我这里直接关了防火墙

进入目录 /usr/local/nginx/sbin/nginx 启动服务 ./nginx

nginx 常用的命令

1、进入 nginx 目录中 cd /usr/local/nginx/sbin

2、查看 nginx 版本号

./nginx –v

3、启动命令

./nginx

4、关闭命令

./nginx -s stop

5、重新加载命令

./nginx -s reload

nginx.conf 配置文件

nginx 配置文件结构,主要包涵3个核心模块和若干个辅助模块组成

(main)核心模块包涵:

                  主模块(user、worker_processes、pid、error_log ......)           

                  事件模块(accept_mutex、multi_accept、use、worker_connections ......)

                  HTTP核心模块(upstream、server、location、SSL、HttpGzip ......)

####nginx.conf详解如下,每个指令必须有分号结束。####

user nginx;  #配置用户或者组,默认为nobody nobody。

worker_processes auto;  #允许生成的进程数,默认为1,auto 代表进程数由CPU个数决定。

pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址

error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

events {

    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on

    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off

    use epoll;      #默认高效率处理,事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport

    worker_connections  1024;    #最大连接数,默认为512

}

http {

    include       mime.types;   #文件扩展名与文件类型映射表

    default_type  application/octet-stream; #默认文件类型,默认为text/plain

    access_log off; #access log很耗费性能,所以默认都是关闭的,如果需要开启定位问题,从配置服务上改。  

    access_log log/access.log myFormat;  #combined为日志格式的默认值

    log_format myFormat '$remote_addr–$remote_user |[$time_local] |$request |$status |$body_bytes_sent |$http_referer |$http_user_agent |$http_x_forwarded_for'; #自定义日志格式

    client_body_buffer_size 100m; #可以通过配置服务更改,限定客户端请求的缓冲区大小,超过限定值之后就只有写到硬盘上了,没必要过度提高这个值。

    client_max_body_size 100m; #限定客户端请求的最大文件大小,默认为1M,超长请求会被http 413 entity too large错误拦截。

    client_body_temp_path client_body;

    proxy_http_version 1.1;

    proxy_temp_path proxy_temp;

    proxy_set_header Host $http_host;

    proxy_set_header Connection "Keep-Alive";

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #从某个版本开始应业务要求加上的,给X-Forwarded-For头字段添加上拓扑上一级的ip地址,可以让下游服务器判断消息的最初来源ip。

    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。

    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。

         server_tokens off;  #off表示隐去nginx的版本信息。

    keepalive_timeout  30;  #http keepalive连接的超时时间,默认为75s,可通过配置服务变更,但通常来说都是客户端在数据传完几秒后就断开连接了。

    gzip on;  #gzip用于设置开启或者关闭gzip模块,“gzip on”表示开启GZIP压缩,实时压缩输出数据流。

    gzip_min_length 1k;  #gzip_min_length设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大。

    gzip_buffers 4 16k;  #gzip_buffers表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。

    gzip_http_version 1.1;  #gzip_http_version用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。

    gzip_comp_level 2;  #gzip_comp_level用来指定GZIP压缩比,1 压缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。

    gzip_types text/plain application/x-javascript text/css application/xml;  #gzip_types用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的。

    gzip_vary on;  #gzip_vary选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。       

         #默认负载策略就是轮询,

    upstream varnish {

        server 127.0.0.1:${varnish_port} fail_timeout=4;

        server 127.0.0.1:${nginx_http_port} backup;

        keepalive 512;

    }  #这是本机varnish的,一般情况下不要改动。

    server {

        listen 80

        server_name  ${DomainName}; #这个domainName来自于部署参数。

        proxy_buffering off;  #有了varnish就不用nginx来缓存消息了

        include http_location.conf;  #这个文件包含了所有路由包的http location配置

        include custom_http_location.conf;  #这个文件默认为空,可以添加一些特殊的http location,不受paas流程影响,但只能手工维护,如要添加,请一定备案!

        return 301 https://$server_name$request_uri; #HTTP强制重定向至HTTPS

        error_page  404              /404.html;

        location = /404.html {

            root   html;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }#上面两种html文件是我们提供的默认错误页,只有业务那边不提供错误页的时候才会使用,默认页里不含任何nginx的相关信息。

         }         

    server {

        listen 443 so_keepalive=on ssl;

        server_name  ${sslDomainName}; #这个domainName来自于部署参数,一定要和本机使用的ssl证书私钥匹配。

        proxy_buffering off;

        ssl_session_cache    shared:SSL:10m;

        ssl_session_timeout  5m;

        ssl_certificate BesCert.crt;

        ssl_certificate_key server.key;

        ssl_verify_client off;

        ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;

        ssl_ciphers HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers on;

        proxy_ssl_session_reuse on;  #上面几项ssl配置没有特殊需要请勿修改

        proxy_buffering off;  #有了varnish就不用nginx来缓存消息了

        include http_location.conf;  #这个文件包含了所有路由包的http location配置

        include custom_http_location.conf;  #这个文件默认为空,可以添加一些特殊的http location,不受paas流程影响,但只能手工维护,如要添加,请一定备案!

        location /BesCert.crt {

            root conf/;

        }  #可以通过http://nginxIP:nginxPort/BesCert.crt来下载ssl证书

        location ~* \.(css|svg|usl|uslx|wav|gif|jpg|jpeg|png|bmp|flv|js|swf|pdf|doc|ico|rtf)(\?.*)?$ {

            proxy_pass http://varnish;

        } #利用正则表达式过滤静态资源,分流给varnish处理,哪些文件属于静态资源由业务说了算

        location = /node_status {

            proxy_pass http://127.0.0.1:${varnish_port};

        }  #访问http://nginxIP:nginxPort/node_status来查看本节点的nginx和varnish是否正常服务,这个url地址也是提供给slb/radware来检查nginx健康度的。

        location /nginx_status {

            stub_status on;

            allow ${nginx_ip};

            deny all;

        } #访问http://nginxIP:nginxPort/nginx_status来查看nginx的一些数据统计,这些数据也是kpi指标,仅限本机访问。

        location /upstream_health {

            check_status;

            access_log off;

            allow ${nginx_ip};

            deny all;

        }  #访问http://nginxIP:nginxPort/upstream_health来查看nginx代理的所有upstream集群的健康状态,用浏览器呈现效果最好,但仅限本机访问。理论上可以增加更多allow xxx来扩展信任域,但一定要备案,免得泄露了敏感信息。       

        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。

           #root path;  #根目录

           #index vv.txt;  #设置默认页

           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表

           deny 127.0.0.1;  #拒绝的ip

           allow 172.18.5.54; #允许的ip          

        }  

        error_page  404              /404.html;

        location = /404.html {

            root   html;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }#上面两种html文件是我们提供的默认错误页,只有业务那边不提供错误页的时候才会使用,默认页里不含任何nginx的相关信息。

         }

}

上一篇:Linux中阶—超文本协议http(六)

下一篇:Linux中阶—远程接入ssh&sftp(八)

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于CentOS操作系统的Nginx Web服务器搭建过程分析: 1. 安装Nginx软件:使用命令行工具,运行以下命令安装Nginx软件: ``` sudo yum install nginx ``` 2. 启动Nginx服务:使用命令行工具,运行以下命令启动Nginx服务: ``` sudo systemctl start nginx ``` 3. 配置Nginx:默认情况下,Nginx安装后会自动配置一个简单的网站。您可以通过编辑`/etc/nginx/nginx.conf`文件来修改配置,并添加您自己的网站。 4. 添加网站:为了添加您自己的网站,您需要在`/etc/nginx/conf.d/`目录下创建一个新的配置文件,例如`example.com.conf`,并进行相应的配置。以下是一个简单的配置示例: ``` server { listen 80; server_name example.com; root /usr/share/nginx/html; index index.html; location / { try_files $uri $uri/ /index.html; } } ``` 5. 测试网站:完成配置后,您可以使用浏览器访问您的网站,例如`http://example.com`。如果一切正常,您应该能够看到您的网站页面。 6. 配置SSL证书:如果您需要在Nginx上启用HTTPS协议,您需要配置SSL证书。以下是一个简单的配置示例: ``` server { listen 443 ssl; server_name example.com; root /usr/share/nginx/html; index index.html; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { try_files $uri $uri/ /index.html; } } ``` 7. 重启Nginx服务:在完成配置后,您需要重新启动Nginx服务,以使配置生效。可以使用以下命令重启Nginx服务: ``` sudo systemctl restart nginx ``` 这些是基于CentOS操作系统的Nginx Web服务器搭建过程分析。当然,具体的配置过程可能会因为不同的需求而有所不同。如果您需要更详细的指导,建议您寻找专业的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值