@@ -15,14 +15,6 @@ const LIVE_URL = 'https://acme-v01.api.letsencrypt.org/directory';
15
15
const STAGING_URL = 'https://acme-staging.api.letsencrypt.org/directory' ;
16
16
17
17
class NginxExtension extends cli . Extension {
18
- get parsedUrl ( ) {
19
- if ( ! this . _parsedUrl ) {
20
- this . _parsedUrl = url . parse ( this . instance . config . get ( 'url' ) ) ;
21
- }
22
-
23
- return this . _parsedUrl ;
24
- }
25
-
26
18
setup ( cmd , argv ) {
27
19
// ghost setup --local, skip
28
20
if ( argv . local ) {
@@ -39,17 +31,19 @@ class NginxExtension extends cli.Extension {
39
31
return task && task . skip ( ) ;
40
32
}
41
33
42
- if ( this . parsedUrl . port ) {
34
+ let parsedUrl = url . parse ( ctx . instance . config . get ( 'url' ) ) ;
35
+
36
+ if ( parsedUrl . port ) {
43
37
this . ui . log ( 'Your url contains a port. Skipping nginx setup.' , 'yellow' ) ;
44
38
return task && task . skip ( ) ;
45
39
}
46
40
47
- if ( this . parsedUrl . pathname !== '/' ) {
41
+ if ( parsedUrl . pathname !== '/' ) {
48
42
this . ui . log ( 'The Nginx service does not support subdirectory configurations yet. Skipping nginx setup.' , 'yellow' ) ;
49
43
return task && task . skip ( ) ;
50
44
}
51
45
52
- if ( fs . existsSync ( `/etc/nginx/sites-available/${ this . parsedUrl . hostname } .conf` ) ) {
46
+ if ( fs . existsSync ( `/etc/nginx/sites-available/${ parsedUrl . hostname } .conf` ) ) {
53
47
this . ui . log ( 'Nginx configuration already found for this url. Skipping nginx configuration.' , 'yellow' ) ;
54
48
return task && task . skip ( ) ;
55
49
}
@@ -61,7 +55,7 @@ class NginxExtension extends cli.Extension {
61
55
62
56
http . _add ( 'listen' , '80' ) ;
63
57
http . _add ( 'listen' , '[::]:80' ) ;
64
- http . _add ( 'server_name' , this . parsedUrl . hostname ) ;
58
+ http . _add ( 'server_name' , parsedUrl . hostname ) ;
65
59
66
60
let rootPath = path . resolve ( ctx . instance . dir , 'system' , 'nginx-root' ) ;
67
61
fs . ensureDirSync ( rootPath ) ;
@@ -70,7 +64,7 @@ class NginxExtension extends cli.Extension {
70
64
http . _add ( 'location' , '/' ) ;
71
65
this . _addProxyBlock ( http . location , ctx . instance . config . get ( 'server.port' ) ) ;
72
66
73
- let confFile = `${ this . parsedUrl . hostname } .conf` ;
67
+ let confFile = `${ parsedUrl . hostname } .conf` ;
74
68
75
69
return ctx . instance . template (
76
70
conf . toString ( ) ,
@@ -97,7 +91,9 @@ class NginxExtension extends cli.Extension {
97
91
return task && task . skip ( ) ;
98
92
}
99
93
100
- let confFile = `${ this . parsedUrl . hostname } .conf` ;
94
+ let parsedUrl = url . parse ( ctx . instance . config . get ( 'url' ) ) ;
95
+
96
+ let confFile = `${ parsedUrl . hostname } .conf` ;
101
97
let nginxConfPath = path . join ( ctx . instance . dir , 'system' , 'files' , confFile ) ;
102
98
103
99
if ( ! fs . existsSync ( nginxConfPath ) ) {
@@ -139,7 +135,7 @@ class NginxExtension extends cli.Extension {
139
135
task : ( ) => {
140
136
let letsencryptFolder = path . join ( ctx . instance . dir , 'system' , 'letsencrypt' ) ;
141
137
let sslGenArgs = `certonly --agree-tos --email ${ argv . sslemail } --webroot --webroot-path ${ rootPath } ` +
142
- ` --config-dir ${ letsencryptFolder } --domains ${ this . parsedUrl . hostname } --server ${ argv . sslStaging ? STAGING_URL : LIVE_URL } ` ;
138
+ ` --config-dir ${ letsencryptFolder } --domains ${ parsedUrl . hostname } --server ${ argv . sslStaging ? STAGING_URL : LIVE_URL } ` ;
143
139
144
140
return execa ( 'greenlock' , sslGenArgs . split ( ' ' ) , {
145
141
stdio : 'ignore' ,
@@ -179,13 +175,13 @@ class NginxExtension extends cli.Extension {
179
175
// add listen directives
180
176
https . _add ( 'listen' , '443 ssl http2' ) ;
181
177
https . _add ( 'listen' , '[::]:443 ssl http2' ) ;
182
- https . _add ( 'server_name' , this . parsedUrl . hostname ) ;
178
+ https . _add ( 'server_name' , parsedUrl . hostname ) ;
183
179
184
180
let letsencryptPath = path . join ( ctx . instance . dir , 'system' , 'letsencrypt' , 'live' ) ;
185
181
186
182
// add ssl cert directives
187
- https . _add ( 'ssl_certificate' , path . join ( letsencryptPath , this . parsedUrl . hostname , 'fullchain.pem' ) ) ;
188
- https . _add ( 'ssl_certificate_key' , path . join ( letsencryptPath , this . parsedUrl . hostname , 'privkey.pem' ) ) ;
183
+ https . _add ( 'ssl_certificate' , path . join ( letsencryptPath , parsedUrl . hostname , 'fullchain.pem' ) ) ;
184
+ https . _add ( 'ssl_certificate_key' , path . join ( letsencryptPath , parsedUrl . hostname , 'privkey.pem' ) ) ;
189
185
// add ssl-params snippet
190
186
https . _add ( 'include' , path . join ( ctx . instance . dir , 'system' , 'files' , 'ssl-params.conf' ) ) ;
191
187
// add root directive
@@ -219,7 +215,8 @@ class NginxExtension extends cli.Extension {
219
215
return ;
220
216
}
221
217
222
- let confFile = `${ this . parsedUrl . hostname } .conf` ;
218
+ let parsedUrl = url . parse ( instance . config . get ( 'url' ) ) ;
219
+ let confFile = `${ parsedUrl . hostname } .conf` ;
223
220
224
221
if ( fs . existsSync ( `/etc/nginx/sites-available/${ confFile } ` ) ) {
225
222
return this . ui . sudo ( `rm /etc/nginx/sites-available/${ confFile } ` ) . then ( ( ) => {
0 commit comments