Write the Code. Change the World.

7月 01

前言

既然,使用 wnmp 。没有图形界面,所有配置都需要手动设置,改变。做的站点也不止一个,如果所有站点的配置都写在一个conf文件中,看起来有点臃肿。对每个站点,进行单独配置比较有必要。

配置

修改 /nginx/conf/nginx.conf 如下:

worker_processes  1;

events {
    worker_connections  1024;
}

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"';

    sendfile        on;
    keepalive_timeout  65;
    client_max_body_size 100m;

    gzip  on;
    include conf.d/*.conf;
}

/nginx/conf/下,建立目录 conf.d 。在 conf.d 目录下配置各个站点的配置。

eg:www.conf

server {
    listen       80;
    server_name  localhost;

    access_log  logs/www.access.log  main;

    root   www;
#   root   D:/service/wnmp/nginx/www/;
    index  index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass   127.0.0.1:9000;
        include        fastcgi.conf;
    }
}

配置中的地址,如果不是绝对路劲,都是以 nginx 为相对目录。

配置 https 访问。

eg:https.conf

server {
    server_name  localhost;

    access_log  logs/www.access.log  main;

    root   www;
    index  index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass   127.0.0.1:9000;
        include        fastcgi.conf;
    }

    listen       443 ssl;

    ssl_certificate      conf.d/cert/phpcj.crt;
    ssl_certificate_key  conf.d/cert/phpcj.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
}

ssl 证书,需要制作或去第三方申请。上边这些所有配置请参考:

http://phpcj.org/wnmp/

域名访问本地站点

习惯在本地用 localhost127.0.0.1 来访问站点。下边来尝点鲜,用域名来访问自己本地的站点(比如:http://www.win.com)。
这样可以避免用多 端口多层级目录 来访问多站点的不美观。

要实现以上的功能,需要做到以下两点(以 https://www.mlxiu.com 为列):

第一,写host。依次操作 win + r -> drivers -> etc -> hosts ,host中添加以下内容:

127.0.0.1 www.mlxiu.com

127.0.0.1 mlxiu.com

第二, init.d 目录下新建 mlxiu.com.conf 文件,添加下边内容:

server {
    listen 80;
    server_name  mlxiu.com www.mlxiu.com; 
    return 301 https://www.mlxiu.com$request_uri;
}

server {
    listen 443 ssl; 
    server_name  mlxiu.com www.mlxiu.com;  

    if ( $host = 'mlxiu.com' ){
        return 301 https://www.mlxiu.com$request_uri;
    } 

    ssl_certificate         D:/service/wnmp/nginx/conf/ssl/mlxiu.com.pem;
    ssl_certificate_key     D:/service/wnmp/nginx/conf/ssl/mlxiu.com.key;

    charset utf-8;
    index index.php index.html index.htm;
    root E:/林林乐园.Study/webserver/mlxiu.com/web/;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~ \.php($|/) {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param HTTPS $https if_not_empty;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi.conf;
    }

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    access_log  D:/service/wnmp/nginx/logs/mlxiu.com.log;
}

配置说明:

监听 80端口,就是http服务。server_name 为要监听的域名,如果访问时的80端口,则跳转。

监听 443端口,就是https服务。如果host是 mlxiu.com ,则强制加上www。然后再跳转。

通过上边的设置。访问 mlxiu.com 这个域名都会跳转到 https://www.mlxiu.com

ssl_certificate和ssl_certificate_key。我用的是自己阿里云相关证书机构上申请的。

root 配置站点映射的目录。

添加好了配置,重启 nginx

d:
cd service/wnmp/nginx/nginx -s reload

重启 nginx 必须保证所有的 conf 配置文件正确。

然后访问:http://www.mlxiu.com, 截图如下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注