前言
既然,使用 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 证书,需要制作或去第三方申请。上边这些所有配置请参考:
域名访问本地站点
习惯在本地用 localhost 或 127.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, 截图如下: