标签: Nginx

  • HTTP Content-type对照表

    文件扩展名Content-Type(Mime-Type)文件扩展名Content-Type(Mime-Type)
    .*( 二进制流,不知道下载文件类型)application/octet-stream.tifimage/tiff
    .001application/x-001.301application/x-301
    .323text/h323.906application/x-906
    .907drawing/907.a11application/x-a11
    .acpaudio/x-mei-aac.aiapplication/postscript
    .aifaudio/aiff.aifcaudio/aiff
    .aiffaudio/aiff.anvapplication/x-anv
    .asatext/asa.asfvideo/x-ms-asf
    .asptext/asp.asxvideo/x-ms-asf
    .auaudio/basic.avivideo/avi
    .awfapplication/vnd.adobe.workflow.biztext/xml
    .bmpapplication/x-bmp.botapplication/x-bot
    .c4tapplication/x-c4t.c90application/x-c90
    .calapplication/x-cals.catapplication/vnd.ms-pki.seccat
    .cdfapplication/x-netcdf.cdrapplication/x-cdr
    .celapplication/x-cel.cerapplication/x-x509-ca-cert
    .cg4application/x-g4.cgmapplication/x-cgm
    .citapplication/x-cit.classjava/*
    .cmltext/xml.cmpapplication/x-cmp
    .cmxapplication/x-cmx.cotapplication/x-cot
    .crlapplication/pkix-crl.crtapplication/x-x509-ca-cert
    .csiapplication/x-csi.csstext/css
    .cutapplication/x-cut.dbfapplication/x-dbf
    .dbmapplication/x-dbm.dbxapplication/x-dbx
    .dcdtext/xml.dcxapplication/x-dcx
    .derapplication/x-x509-ca-cert.dgnapplication/x-dgn
    .dibapplication/x-dib.dllapplication/x-msdownload
    .docapplication/msword.dotapplication/msword
    .drwapplication/x-drw.dtdtext/xml
    .dwfModel/vnd.dwf.dwfapplication/x-dwf
    .dwgapplication/x-dwg.dxbapplication/x-dxb
    .dxfapplication/x-dxf.ednapplication/vnd.adobe.edn
    .emfapplication/x-emf.emlmessage/rfc822
    .enttext/xml.epiapplication/x-epi
    .epsapplication/x-ps.epsapplication/postscript
    .etdapplication/x-ebx.exeapplication/x-msdownload
    .faximage/fax.fdfapplication/vnd.fdf
    .fifapplication/fractals.fotext/xml
    .frmapplication/x-frm.g4application/x-g4
    .gbrapplication/x-gbr.application/x-
    .gifimage/gif.gl2application/x-gl2
    .gp4application/x-gp4.hglapplication/x-hgl
    .hmrapplication/x-hmr.hpgapplication/x-hpgl
    .hplapplication/x-hpl.hqxapplication/mac-binhex40
    .hrfapplication/x-hrf.htaapplication/hta
    .htctext/x-component.htmtext/html
    .htmltext/html.htttext/webviewhtml
    .htxtext/html.icbapplication/x-icb
    .icoimage/x-icon.icoapplication/x-ico
    .iffapplication/x-iff.ig4application/x-g4
    .igsapplication/x-igs.iiiapplication/x-iphone
    .imgapplication/x-img.insapplication/x-internet-signup
    .ispapplication/x-internet-signup.IVFvideo/x-ivf
    .javajava/*.jfifimage/jpeg
    .jpeimage/jpeg.jpeapplication/x-jpe
    .jpegimage/jpeg.jpgimage/jpeg
    .jpgapplication/x-jpg.jsapplication/x-javascript
    .jsptext/html.la1audio/x-liquid-file
    .larapplication/x-laplayer-reg.latexapplication/x-latex
    .lavsaudio/x-liquid-secure.lbmapplication/x-lbm
    .lmsffaudio/x-la-lms.lsapplication/x-javascript
    .ltrapplication/x-ltr.m1vvideo/x-mpeg
    .m2vvideo/x-mpeg.m3uaudio/mpegurl
    .m4evideo/mpeg4.macapplication/x-mac
    .manapplication/x-troff-man.mathtext/xml
    .mdbapplication/msaccess.mdbapplication/x-mdb
    .mfpapplication/x-shockwave-flash.mhtmessage/rfc822
    .mhtmlmessage/rfc822.miapplication/x-mi
    .midaudio/mid.midiaudio/mid
    .milapplication/x-mil.mmltext/xml
    .mndaudio/x-musicnet-download.mnsaudio/x-musicnet-stream
    .mochaapplication/x-javascript.movievideo/x-sgi-movie
    .mp1audio/mp1.mp2audio/mp2
    .mp2vvideo/mpeg.mp3audio/mp3
    .mp4video/mpeg4.mpavideo/x-mpg
    .mpdapplication/vnd.ms-project.mpevideo/x-mpeg
    .mpegvideo/mpg.mpgvideo/mpg
    .mpgaaudio/rn-mpeg.mppapplication/vnd.ms-project
    .mpsvideo/x-mpeg.mptapplication/vnd.ms-project
    .mpvvideo/mpg.mpv2video/mpeg
    .mpwapplication/vnd.ms-project.mpxapplication/vnd.ms-project
    .mtxtext/xml.mxpapplication/x-mmxp
    .netimage/pnetvue.nrfapplication/x-nrf
    .nwsmessage/rfc822.odctext/x-ms-odc
    .outapplication/x-out.p10application/pkcs10
    .p12application/x-pkcs12.p7bapplication/x-pkcs7-certificates
    .p7capplication/pkcs7-mime.p7mapplication/pkcs7-mime
    .p7rapplication/x-pkcs7-certreqresp.p7sapplication/pkcs7-signature
    .pc5application/x-pc5.pciapplication/x-pci
    .pclapplication/x-pcl.pcxapplication/x-pcx
    .pdfapplication/pdf.pdfapplication/pdf
    .pdxapplication/vnd.adobe.pdx.pfxapplication/x-pkcs12
    .pglapplication/x-pgl.picapplication/x-pic
    .pkoapplication/vnd.ms-pki.pko.plapplication/x-perl
    .plgtext/html.plsaudio/scpls
    .pltapplication/x-plt.pngimage/png
    .pngapplication/x-png.potapplication/vnd.ms-powerpoint
    .ppaapplication/vnd.ms-powerpoint.ppmapplication/x-ppm
    .ppsapplication/vnd.ms-powerpoint.pptapplication/vnd.ms-powerpoint
    .pptapplication/x-ppt.prapplication/x-pr
    .prfapplication/pics-rules.prnapplication/x-prn
    .prtapplication/x-prt.psapplication/x-ps
    .psapplication/postscript.ptnapplication/x-ptn
    .pwzapplication/vnd.ms-powerpoint.r3ttext/vnd.rn-realtext3d
    .raaudio/vnd.rn-realaudio.ramaudio/x-pn-realaudio
    .rasapplication/x-ras.ratapplication/rat-file
    .rdftext/xml.recapplication/vnd.rn-recording
    .redapplication/x-red.rgbapplication/x-rgb
    .rjsapplication/vnd.rn-realsystem-rjs.rjtapplication/vnd.rn-realsystem-rjt
    .rlcapplication/x-rlc.rleapplication/x-rle
    .rmapplication/vnd.rn-realmedia.rmfapplication/vnd.adobe.rmf
    .rmiaudio/mid.rmjapplication/vnd.rn-realsystem-rmj
    .rmmaudio/x-pn-realaudio.rmpapplication/vnd.rn-rn_music_package
    .rmsapplication/vnd.rn-realmedia-secure.rmvbapplication/vnd.rn-realmedia-vbr
    .rmxapplication/vnd.rn-realsystem-rmx.rnxapplication/vnd.rn-realplayer
    .rpimage/vnd.rn-realpix.rpmaudio/x-pn-realaudio-plugin
    .rsmlapplication/vnd.rn-rsml.rttext/vnd.rn-realtext
    .rtfapplication/msword.rtfapplication/x-rtf
    .rvvideo/vnd.rn-realvideo.samapplication/x-sam
    .satapplication/x-sat.sdpapplication/sdp
    .sdwapplication/x-sdw.sitapplication/x-stuffit
    .slbapplication/x-slb.sldapplication/x-sld
    .slkdrawing/x-slk.smiapplication/smil
    .smilapplication/smil.smkapplication/x-smk
    .sndaudio/basic.soltext/plain
    .sortext/plain.spcapplication/x-pkcs7-certificates
    .splapplication/futuresplash.spptext/xml
    .ssmapplication/streamingmedia.sstapplication/vnd.ms-pki.certstore
    .stlapplication/vnd.ms-pki.stl.stmtext/html
    .styapplication/x-sty.svgtext/xml
    .swfapplication/x-shockwave-flash.tdfapplication/x-tdf
    .tg4application/x-tg4.tgaapplication/x-tga
    .tifimage/tiff.tifapplication/x-tif
    .tiffimage/tiff.tldtext/xml
    .topdrawing/x-top.torrentapplication/x-bittorrent
    .tsdtext/xml.txttext/plain
    .uinapplication/x-icq.ulstext/iuls
    .vcftext/x-vcard.vdaapplication/x-vda
    .vdxapplication/vnd.visio.vmltext/xml
    .vpgapplication/x-vpeg005.vsdapplication/vnd.visio
    .vsdapplication/x-vsd.vssapplication/vnd.visio
    .vstapplication/vnd.visio.vstapplication/x-vst
    .vswapplication/vnd.visio.vsxapplication/vnd.visio
    .vtxapplication/vnd.visio.vxmltext/xml
    .wavaudio/wav.waxaudio/x-ms-wax
    .wb1application/x-wb1.wb2application/x-wb2
    .wb3application/x-wb3.wbmpimage/vnd.wap.wbmp
    .wizapplication/msword.wk3application/x-wk3
    .wk4application/x-wk4.wkqapplication/x-wkq
    .wksapplication/x-wks.wmvideo/x-ms-wm
    .wmaaudio/x-ms-wma.wmdapplication/x-ms-wmd
    .wmfapplication/x-wmf.wmltext/vnd.wap.wml
    .wmvvideo/x-ms-wmv.wmxvideo/x-ms-wmx
    .wmzapplication/x-ms-wmz.wp6application/x-wp6
    .wpdapplication/x-wpd.wpgapplication/x-wpg
    .wplapplication/vnd.ms-wpl.wq1application/x-wq1
    .wr1application/x-wr1.wriapplication/x-wri
    .wrkapplication/x-wrk.wsapplication/x-ws
    .ws2application/x-ws.wsctext/scriptlet
    .wsdltext/xml.wvxvideo/x-ms-wvx
    .xdpapplication/vnd.adobe.xdp.xdrtext/xml
    .xfdapplication/vnd.adobe.xfd.xfdfapplication/vnd.adobe.xfdf
    .xhtmltext/html.xlsapplication/vnd.ms-excel
    .xlsapplication/x-xls.xlwapplication/x-xlw
    .xmltext/xml.xplaudio/scpls
    .xqtext/xml.xqltext/xml
    .xquerytext/xml.xsdtext/xml
    .xsltext/xml.xslttext/xml
    .xwdapplication/x-xwd.x_bapplication/x-x_b
    .sisapplication/vnd.symbian.install.sisxapplication/vnd.symbian.install
    .x_tapplication/x-x_t.ipaapplication/vnd.iphone
    .apkapplication/vnd.android.package-archive.xapapplication/x-silverlight-app
  • Linux Apache Nginx SSL证书安装配置图文教程

    Linux Apache Nginx SSL证书安装配置图文教程

    下载得到的 www.domain.com.zip 文件,解压获得3个文件夹,分别是Apache、IIS、Nginx 服务器的证书文件,
    下面提供了4类服务器证书安装方法的示例:

    Apache 2.x 证书部署

    获取证书

    Apache文件夹内获得证书文件 1_root_bundle.crt,2_www.domain.com_cert.crt 和私钥文件 3_www.domain.com.key,
    1_root_bundle.crt 文件包括一段证书代码 “—–BEGIN CERTIFICATE—–”和“—–END CERTIFICATE—–”,
    2_www.domain.com_cert.crt 文件包括一段证书代码 “—–BEGIN CERTIFICATE—–”和“—–END CERTIFICATE—–”,
    3_www.domain.com.key 文件包括一段私钥代码“—–BEGIN RSA PRIVATE KEY—–”和“—–END RSA PRIVATE KEY—–”。

    证书安装

    编辑Apache根目录下 conf/httpd.conf 文件,
    找到 #LoadModule ssl_module modules/mod_ssl.so 和 #Include conf/extra/httpd-ssl.conf,去掉前面的#号注释;
    编辑Apache根目录下 conf/extra/httpd-ssl.conf 文件,修改如下内容:

    <VirtualHost www.domain.com:443>
        DocumentRoot "/var/www/html"
        ServerName www.domain.com
        SSLEngine on
        SSLCertificateFile /usr/local/apache/conf/2_www.domain.com_cert.crt
        SSLCertificateKeyFile /usr/local/apache/conf/3_www.domain.com.key
        SSLCertificateChainFile /usr/local/apache/conf/1_root_bundle.crt
    </VirtualHost>
    

    配置完成后,重新启动 Apache 就可以使用https://www.domain.com来访问了。

    注:

    配置文件参数说明
    SSLEngine on启用SSL功能
    SSLCertificateFile证书文件
    SSLCertificateKeyFile私钥文件
    SSLCertificateChainFile证书链文件

    Nginx 证书部署

    获取证书

    Nginx文件夹内获得SSL证书文件 1_www.domain.com_bundle.crt 和私钥文件 2_www.domain.com.key,
    1_www.domain.com_bundle.crt 文件包括两段证书代码 “—–BEGIN CERTIFICATE—–”和“—–END CERTIFICATE—–”,
    2_www.domain.com.key 文件包括一段私钥代码“—–BEGIN RSA PRIVATE KEY—–”和“—–END RSA PRIVATE KEY—–”。

    证书安装

    将域名 www.domain.com 的证书文件1_www.domain.com_bundle.crt 、私钥文件2_www.domain.com.key保存到同一个目录,例如/usr/local/nginx/conf目录下。
    更新Nginx根目录下 conf/nginx.conf 文件如下:

    server {
            listen 443;
            server_name www.domain.com; #填写绑定证书的域名
            ssl on;
            ssl_certificate 1_www.domain.com_bundle.crt;
            ssl_certificate_key 2_www.domain.com.key;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
            ssl_prefer_server_ciphers on;
            location / {
                root   html; #站点目录
                index  index.html index.htm;
            }
        }
    

    配置完成后,先用bin/nginx –t来测试下配置是否有误,正确无误的话,重启nginx。就可以使 https://www.domain.com 来访问了。

    注:

    配置文件参数说明
    listen 443SSL访问端口号为443
    ssl on启用SSL功能
    ssl_certificate证书文件
    ssl_certificate_key私钥文件
    ssl_protocols使用的协议
    ssl_ciphers配置加密套件,写法遵循openssl标准

    使用全站加密,http自动跳转https(可选)

    对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。
    在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
    在http的server里增加rewrite ^(.*) https://$host$1 permanent;
    这样就可以实现80进来的请求,重定向为https了。

  • php-fpm 在 MacOS 中重启 图文教程

    php-fpm 在 MacOS 中重启 图文教程

    查看php-fpm端口是否在被php-fpm使用

    sudo lsof -i:9000

    一般修改 php.ini 文件后经常需要重启php-fpm,杀掉全部进程

    sudo killall php-fpm 

    启动php-fpm

    sudo php-fpm 
  • 解决Nginx的connect() to 127.0.0.1:8080 failed (13: Permission denied) while connect

    解决Nginx的connect() to 127.0.0.1:8080 failed (13: Permission denied) while connect

    前篇文章我们写了 Docker 下使用Centos系统镜像安装 uwsgi 运行 Python3 Django ,我们在实际运行 Nginx+uWSGI 搭配时出现 502 Bad Getway ,在nginx的error.log错误日志中,我们可以看到如下:

     connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream,

    经过一番检查以及google,应该是SeLinux的导致的。执行下面命令即可:

    setsebool -P httpd_can_network_connect 1

    关闭SELinux的两种方法

  • 解决WordPress网站被利用xmlrpc.php文件攻击问题

    解决WordPress网站被利用xmlrpc.php文件攻击问题

    问题描述

    这几天博客经常有出现监控报警VPS宕机的问题,开始我还认为是VPS不稳定造成的(目前用的VPS也有遇到不稳定问题),然后通过日志看到应该是由于有被攻击利用导致的WEB卡死导致的。原因在于使用的WORDPRESS程序默认xmlrpc.php开启,而被用来DDOS攻击导致占用资源过高。

    通过日志我们可以看到如下的内容:

    解决办法

    方法一:利用Nginx直接返回,在对应的主机配置文件中添加

    location ~* /xmlrpc.php {
        deny all;
    }

    方法二:屏蔽 XML-RPC (pingback) 的功能

    在主题对应的 functions.php 中添加如下代码:

    add_filter('xmlrpc_enabled', '__return_false');

    方法三:Apache通过.htaccess屏蔽xmlrpc.php文件的访问

    # protect xmlrpc
    <Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
    </Files>

  • Nginx反向代理Google实例

    Nginx反向代理Google实例

    没事研究一下nginx的反向代理,从网上扒了一段,添加 g.laoji.org.conf 配置文件如下:

    linux下nginx设置静态页面压缩缓存和过期时间教程

    server
    {
        listen          80;
        server_name     g.laoji.org;  #你的域名
        location / {
            proxy_pass          https://www.google.com/;  #需要反代的域名
            proxy_redirect      off;
            proxy_set_header    X-Real-IP       $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        }
            #add_header X_Via $server_addr;  #添加响应头部信息,真实服务器
            #add_header X_cache_hit $upstream_cache_status;  #添加响应头部信息,是否命中缓存
            #sub_filter                 downloads.wordpress.org downloads.wp.laoji.org;    #替换字符串
            #sub_filter_last_modified   on;
            #sub_filter_once            off;
    }

  • 公司OA项目服务器配置注意点

    公司OA项目服务器配置注意点

    公司OA项目中需要注意的配置,这里做一下记录。

    MySQL部分

    [mysql] 区域下添加配置:

    innodb_page_size=32k 
    sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    具体出现问题如下:

    .sql 文件修改

    搜索一下2个部分,将如下部分删除:

    • /*!50013 DEFINER=admin‘@’localhost SQL SECURITY DEFINER */
    • /*!50013 DEFINER=xiaohai@% SQL SECURITY DEFINER */

    否则 /xz_sqxg/gong_index 将会报错。

    具体错误请检查 .sql 文件中的视图部分sql代码

    Apache配置

    以下配置需写在 .conf 文件中,否则不能正常运行。

    RewriteEngine on
    RewriteCond %{REQUEST_METHOD} ^TRACE
    RewriteRule .* - [F]
    RewriteRule !(^/static|\.(gif|swf|exe|png|jpg|js|css)$) /index.php [L]

    Nginx

    或使用nginx配置

    location ~* ^/(?![static])  {
        rewrite ^(.*)$ /index.php last;
    }
    location ~ \.php$ {
        #root           html;
        fastcgi_pass   jphp-fpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /data/wwwroot/POWER_IDC$fastcgi_script_name;
        fastcgi_param  SCRIPT_URL $request_uri;
        include        fastcgi_params;
    }
  • docker logs-查看docker容器日志

    docker logs-查看docker容器日志

    前面老季学习了docker的相关知识,在实际的项目中我们知道使用docker logs查看日志,但是如何通过 docker logs 命令可以查看容器的指定时间日志,指定最后行数呢?下面我们将会记录一下具体的方法。

    命令格式

    $ docker logs [OPTIONS] CONTAINER
      Options:
            --details        显示更多的信息
        -f, --follow         跟踪实时日志
            --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
            --tail string    从日志末尾显示多少行日志, 默认是all
        -t, --timestamps     显示时间戳
            --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

    例子

    查看指定时间后的日志,只显示最后100行:

    $ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

    查看最近30分钟的日志:

    $ docker logs --since 30m CONTAINER_ID

    查看某时间之后的日志:

    $ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

    查看某时间段日志:

    $ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
  • Docker 本地基本搭建Nginx+PHP-FPM+MARIADB 命令

    Docker 本地基本搭建Nginx+PHP-FPM+MARIADB 命令

    记录一下在MacOS下利用Docker搭建Nginx+php-fpm+MariaDB的常用命令:

    # 拉取镜像资源
    docker pull mariadb && docker pull bitnami/php-fpm && docker pull nginx
    # 本地Docoker建立顺序
    docker run -d --name jmysql --restart=always -e MYSQL_ROOT_PASSWORD=jjjjjj -e TZ="Asia/Shanghai" mariadb
    docker run -d --name jphp-fpm -v /wwwroot:/data/wwwroot --restart=always -e TZ="Asia/Shanghai" --link jmysql bitnami/php-fpm
    docker run -d --name jnginx -v /DockerConfig/nginx/conf.d:/etc/nginx/conf.d -v /wwwroot:/data/wwwroot -p 8081:80 --restart=always -e TZ="Asia/Shanghai" --link jphp-fpm --link jmysql nginx
    #启动顺序
    docker start jmysql
    docker start jphp-fpm
    docker start jnginx

  • Docker 安装 PHP 并配合 Nginx 运行 phpinfo

    Docker 安装 PHP 并配合 Nginx 运行 phpinfo

    搜索安装 PHP 镜像

    docker pull php

    查找Docker Hub上的php镜像

    $ docker search php
    NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    php                       While designed for web development, the PH...   1232      [OK]       
    richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable ...   207                  [OK]
    phpmyadmin/phpmyadmin     A web interface for MySQL and MariaDB.          123                  [OK]
    eboraas/apache-php        PHP5 on Apache (with SSL support), built o...   69                   [OK]
    php-zendserver            Zend Server - the integrated PHP applicati...   69        [OK]       
    million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   67                   [OK]
    webdevops/php-nginx       Nginx with PHP-FPM                              39                   [OK]
    webdevops/php-apache      Apache with PHP-FPM (based on webdevops/php)    14                   [OK]
    phpunit/phpunit           PHPUnit is a programmer-oriented testing f...   14                   [OK]
    tetraweb/php              PHP 5.3, 5.4, 5.5, 5.6, 7.0 for CI and run...   12                   [OK]
    webdevops/php             PHP (FPM and CLI) service container             10                   [OK]
    ...

    这里我们拉取官方的镜像,标签为5.6-fpm

    $ docker pull bitnami/php-fpm

    等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为5.6-fpm的镜像。

    $ docker images
    REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
     bitnami/php-fpm            latest              84abb84939ff        About an hour ago   246MB
     php                        latest              f0357c41bff5        10 days ago         367MB
     nginx                      latest              719cd2e3ed04        2 weeks ago         109MB
     docker4w/nsenter-dockerd   latest              2f1c802f322f        8 months ago        187kB

    Nginx + PHP 部署

    Nginx 部署可以查看:Docker 安装 Nginx,一些 Nginx 的配置参考这篇文章。

    启动PHP容器

    $ docker run -d --name jphp-fpm -v D:\wwwroot\POWER_IDC:/data/wwwroot/poweridc  bitnami/php-fpm

    命令说明:

    • –name jphp-fpm : 将容器命名为 jphp-fpm。
    • -v D:\wwwroot\POWER_IDC:/data/wwwroot/poweridc 将主机中项目的目录 POWER_IDC 挂载到容器的data/wwwroot/poweridc

    查看php容器IP

    docker inspect --format '{{ .NetworkSettings.IPAddress }}' jphp-fpm

    配置Nginx的虚拟主机文件

    在该目录下修改 D:\DockerConfig\nginx\conf.d\poweridc.conf 文件,内容如下:

    server {
        listen       80;
        server_name  poweridc;
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
        location / {
            root   /data/wwwroot/poweridc;
            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   /usr/share/nginx/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   jphp-fpm:9000;#下面用了--link参数,hosts里会自动解析ip
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /data/wwwroot/poweridc/$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;
        #}
    }
    

    配置文件说明:

    • 172.17.0.3:9000: 表示 php-fpm 服务的容器地址,上面已经说明。

    启动Nginx

    docker run -d -p 8081:80 --name jnginx -v D:\wwwroot\POWER_IDC:/data/wwwroot/poweridc -v D:\DockerConfig\nginx\conf.d\poweridc.conf:/etc/nginx/conf.d/poweridc.conf -v D:\DockerConfig\nginx\logs:/etc/nginx/logs --link jphp-fpm:bitnami/php-fpm nginx
    • -p 8081:80: 端口映射,把 nginx 中的 80 映射到本地的 8081 端口。
    • D:\wwwroot\POWER_IDC: 是本地 html 文件的存储目录,/data/wwwroot/poweridc 是容器内 html 文件的存储目录。
    • D:\DockerConfig\nginx\conf.d\poweridc.conf: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d/poweridc.conf 是容器内 nginx 配置文件的存储目录。

    运行php文件

    接下来我们在 D:\wwwroot\POWER_IDC 目录下创建 info.php,代码如下:

    <?php phpinfo();

    浏览器打开 http://poweridc:8081/info.php,显示如下:

  • Docker 安装 Nginx 映射本地文件 多虚拟主机 图文教程

    Docker 安装 Nginx 映射本地文件 多虚拟主机 图文教程

    Docker命令行如何安装Nginx?

    docker pull nginx 命令安装

    查找 Docker Hub 上的 nginx 镜像

    $ docker search nginx
    NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    nginx                     Official build of Nginx.                        3260      [OK]       
    jwilder/nginx-proxy       Automated Nginx reverse proxy for docker c...   674                  [OK]
    richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable ...   207                  [OK]
    million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   67                   [OK]
    maxexcloo/nginx-php       Docker framework container with Nginx and ...   57                   [OK]
    ...

    这里我们拉取官方的镜像

    $ docker pull nginx

    等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像。

    $ docker images nginx
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              555bbd91e13c        3 days ago          182.8 MB

    Docker中如何启动Nginx实例?

    以下命令使用 NGINX 默认的配置来启动一个 Nginx 容器实例:

    $ docker run --name jiloc-nginx-test -p 8081:80 -d nginx
    • jiloc-nginx-test 容器名称。
    • the -d设置容器在在后台一直运行。
    • the -p 端口进行映射,将本地 8081 端口映射到容器内部的 80 端口。

    执行以上命令会生成一串字符串,类似 0c3b0eaaa36657306e4586cfd613f5e37bbff0423cc3e58ee3683b4a1f1458f5,这个表示容器的 ID,一般可作为日志的文件名。

    我们可以使用 docker ps 命令查看容器是否有在运行:

    $ docker ps
    CONTAINER ID        IMAGE        ...               PORTS                  NAMES
    0c3b0eaaa366        nginx        ...      0.0.0.0:8081->80/tcp   jiloc-nginx-test

    PORTS 部分表示端口映射,本地的 8081 端口映射到容器内部的 80 端口。

    在浏览器中打开 http://127.0.0.1:8081/,效果如下:


    Docker部署nginx设置配置文件

    首先,创建目录 nginx, 用于存放后面的相关东西。

    $ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

    拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以查看 docker ps 命令输入中的第一列:

    docker cp 0c3b0eaaa366:/etc/nginx/nginx.conf ~/nginx/conf
    • www: 目录将映射为 nginx 容器配置的虚拟目录。
    • logs: 目录将映射为 nginx 容器的日志目录。
    • conf: 目录里的配置文件将映射为 nginx 容器的配置文件。
    • :ro 只读

    部署命令

    $ docker run -d -p 8082:80 --name jiloc-nginx-test-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -v ~/nginx/logs:/var/log/nginx nginx

    已有源码 Windows 本地映射,启动Docker开启虚拟主机

    docker run -d -p 8081:80 --name jnginx -v D:\wwwroot\POWER_IDC:/data/wwwroot/poweridc -v D:\DockerConfig\nginx\conf.d\poweridc.conf:/etc/nginx/conf.d/poweridc.conf nginx

    命令说明:

    • -p 8082:80: 将容器的 80 端口映射到主机的 8082 端口。
    • –name jiloc-nginx-test-web:将容器命名为 jiloc-nginx-test-web。
    • -v ~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
    • -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
    • -v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

    启动以上命令后进入 ~/nginx/www 目录:

    $ cd ~/nginx/www

    创建 index.html 文件,内容如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(laoji.org)</title>
    </head>
    <body>
        <h1>我的第一个标题</h1>
        <p>我的第一个段落。</p>
    </body>
    </html>

    输出结果为:

    我们这里使用的是自定义域名,设置方法请看:

    Linux Windows MacOS 等系统中hosts的原理及作用

    相关命令

    如果要重新载入 NGINX 可以使用以下命令发送 HUP 信号到容器:

    $ docker kill --signal=SIGHUP container-name

    重启 NGINX 容器命令:

    $ docker restart container-name
  • Nginx常用屏蔽规则,让网站更安全

    Nginx常用屏蔽规则,让网站更安全

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务,目前很大一部分网站均使用了Nginx作为WEB服务器,Nginx虽然非常强大,但默认情况下并不能阻挡恶意访问,老季整理了一份常用的Nginx屏蔽规则,希望对你有所帮助。

    在开始之前,希望您已经熟悉Nginx常用命令(如停止、重启等操作)及排查nginx错误日志,以免出现问题不知所措。如无特殊注明,以下的命令均添加到server段内,修改nginx配置之前务必做好备份,修改完毕后需要重载一次nginx,否则不会生效。

    如何防止莫名的文件被下载?

    比如将网站数据库导出到站点根目录进行备份,很有可能也会被别人下载,从而导致数据丢失的风险。以下规则可以防止一些常规的文件被下载,可根据实际情况增减。

    location ~ \.(zip|rar|sql|bak|gz|7z)$ {
      return 444;
    }

    屏蔽非常见蜘蛛(爬虫)

    如果经常分析网站日志你会发现,一些奇怪的UA总是频繁的来访问网站,而这些UA对网站收录毫无意义,反而增加服务器压力,可以直接将其屏蔽。

    if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) {
         return 444;
    }

    禁止某个目录执行脚本

    比如网站上传目录,通常存放的都是静态文件,如果因程序验证不严谨被上传木马程序,导致网站被黑。以下规则请根据自身情况改为您自己的目录,需要禁止的脚本后缀也可以自行添加。

    #uploads|templets|data 这些目录禁止执行PHP
    location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
        return 444;
    }

    屏蔽某个IP或IP段

    如果网站被恶意灌水或CC攻击,可从网站日志中分析特征IP,将其IP或IP段进行屏蔽。

    #屏蔽192.168.5.23这个IP
    deny 192.168.5.23;
    #屏蔽192.168.5.* 这个段
    denu 192.168.5.0/24;

    其它说明

    再次强调,修改nginx配置之前务必做好备份,修改完毕后需要重载一次nginx,否则不会生效。

    上面大部分规则返回444状态码而不是403,因为444状态码在nginx中有特殊含义。nginx的444状态是直接由服务器中断连接,不会向客户端再返回任何消息,比返回403更加暴力。若有不足还请补充和指正。

WeChat