├── README.rdoc ├── config.info ├── index.cgi ├── lang └── en ├── module.info ├── nginx-lib.pl ├── nginx_conf.tpl ├── nginx_conf_old.tpl ├── views ├── create-hosts.pl ├── existing-hosts.pl └── global-settings.pl ├── virtual_feature.pl └── virtualmin-nginx-lib.pl /README.rdoc: -------------------------------------------------------------------------------- 1 | Plugin for Virtualmin/Webmin. 2 | Enable add/remove, disable sites to Nginx config 3 | 4 | INSTALL 5 | 1. Copy to webmin directory(usual /usr/share/webmin) 6 | 2. Goto virtualmin -> Features and Plugins -> Nginx Configure -------------------------------------------------------------------------------- /config.info: -------------------------------------------------------------------------------- 1 | conf_dir=Config directory,3,Default (/etc/nginx/) 2 | sites_available_dir=sites-available subdirectory,3,Default (sites-available/) 3 | sites_enabled_dir=sites-enabled subdirectory,3,Default (sites-enabled/) 4 | nginx_pid=pid file,3,Default (/var/run/nginx.pid) 5 | log_dir=Log directory,3,Default ({HOME}/logs/) 6 | public_html_perm=public_html directory permissions,3,Default (0755) -------------------------------------------------------------------------------- /index.cgi: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use File::Find; 4 | 5 | require 'nginx-lib.pl'; 6 | ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1); 7 | 8 | @tabs = (['global', 'Global Configuration'], ['existing', 'Existing Virtual Hosts'], ['create', 'Create Virtual Host']); 9 | 10 | print ui_tabs_start(\@tabs, 'mode', 'existing'); 11 | 12 | print ui_tabs_start_tab('mode', 'global'); 13 | do 'views/global-settings.pl'; 14 | print &ui_form_end([ [ "save", $text{'save'} ] ]); 15 | 16 | print ui_tabs_end_tab('mode', 'global'); 17 | 18 | print ui_tabs_start_tab('mode', 'existing'); 19 | do 'views/existing-hosts.pl'; 20 | print ui_tabs_end_tab('mode', 'existing'); 21 | 22 | print ui_tabs_start_tab('mode', 'create'); 23 | do 'views/create-hosts.pl'; 24 | print ui_tabs_end_tab('mode', 'create'); 25 | 26 | print ui_tabs_end(); 27 | 28 | 29 | 30 | 31 | ui_print_footer("/", $text{'index'}); -------------------------------------------------------------------------------- /lang/en: -------------------------------------------------------------------------------- 1 | index_title=Nginx Web Server 2 | index_root=The root directory is $1. -------------------------------------------------------------------------------- /module.info: -------------------------------------------------------------------------------- 1 | desc=Nginx Webserver 2 | version=0.02 3 | os_support=*-linux 4 | category=servers -------------------------------------------------------------------------------- /nginx-lib.pl: -------------------------------------------------------------------------------- 1 | BEGIN { push(@INC, ".."); }; 2 | use WebminCore; 3 | init_config(); 4 | 5 | sub get_nginx_config 6 | { 7 | 8 | my $lref = &read_file_lines($module_config_file); 9 | my @rv; 10 | my $lnum = 0; 11 | foreach my $line (@$lref) { 12 | my ($n, $v) = split(/\s+/, $line, 2); 13 | if ($n) { 14 | push(@rv, { 'name' => $n, 'value' => $v, 'line' => $lnum }); 15 | } 16 | $lnum++; 17 | } 18 | return @rv; 19 | 20 | 21 | } -------------------------------------------------------------------------------- /nginx_conf.tpl: -------------------------------------------------------------------------------- 1 | server { 2 | listen :80; 3 | server_name www.; 4 | 5 | access_log /var/log/nginx/.access.log; 6 | error_log /var/log/nginx/.error.log; 7 | 8 | 9 | root /public_html/; 10 | 11 | location / { 12 | index index.php; 13 | try_files $uri $uri/ @script; 14 | } 15 | 16 | location @script{ 17 | rewrite ^(.*)$ /index.php last; 18 | } 19 | 20 | location ~ \.php$ { 21 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 22 | include /etc/nginx/fastcgi_params; 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /nginx_conf_old.tpl: -------------------------------------------------------------------------------- 1 | #server { 2 | # listen :80; 3 | # server_name ; 4 | # rewrite ^/(.*) http://www. permanent; 5 | #} 6 | server { 7 | listen :80; 8 | server_name www.; 9 | 10 | access_log .access.log; 11 | error_log .error.log; 12 | 13 | root /public_html/; 14 | index index.php index.html index.htm; 15 | 16 | if (!-e \$request_filename) { 17 | rewrite ^/(.*)\$ /index.php?q=\$1 last; 18 | } 19 | 20 | # serve static files directly 21 | location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)\$ { 22 | access_log off; 23 | expires 30d; 24 | } 25 | 26 | location ~ \.php\$ { 27 | fastcgi_pass 127.0.0.1:9000; 28 | fastcgi_index index.php; 29 | fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; 30 | include fastcgi_params; 31 | } 32 | 33 | } 34 | CONFIG -------------------------------------------------------------------------------- /views/create-hosts.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vixh/nginx-webmin/913ebeeee6fdbb354d17989846915ef4832869e1/views/create-hosts.pl -------------------------------------------------------------------------------- /views/existing-hosts.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vixh/nginx-webmin/913ebeeee6fdbb354d17989846915ef4832869e1/views/existing-hosts.pl -------------------------------------------------------------------------------- /views/global-settings.pl: -------------------------------------------------------------------------------- 1 | use File::Find; 2 | 3 | print ""; 7 | print &ui_form_start("allmanual_save.cgi", "form-data"); 8 | $data = &read_file_contents($config{'root'} . "/conf/nginx.conf"); 9 | print &ui_textarea("data", $data, 20, 80, undef, undef, 10 | "style='width:100%'"),"
\n"; -------------------------------------------------------------------------------- /virtual_feature.pl: -------------------------------------------------------------------------------- 1 | do 'virtualmin-nginx-lib.pl'; 2 | 3 | 4 | use File::Copy; 5 | use Cwd 'abs_path'; 6 | our ($conf_dir, $sites_avaliable_dir, $sites_enabled_dir, $log_dir); 7 | 8 | #TODO if $conf_dir, $sites_avaliable_dir, $sites_enabled_dir come from user put trail slash 9 | #TODO Config set by user not working, only default values 10 | 11 | if($config{'conf_dir'} eq "") 12 | { 13 | $conf_dir = '/etc/nginx/'; 14 | } 15 | 16 | if($config{'sites_available_dir'} eq "") 17 | { 18 | $sites_available_dir = 'sites-available/'; 19 | } 20 | 21 | if($config{'sites_enabled_dir'} eq "") 22 | { 23 | $sites_enabled_dir = 'sites-enabled/'; 24 | } 25 | 26 | 27 | 28 | sub feature_always_links 29 | { 30 | 31 | } 32 | 33 | sub feature_backup 34 | { 35 | 36 | } 37 | 38 | sub feature_bandwidth 39 | { 40 | 41 | } 42 | 43 | sub feature_check 44 | { 45 | my $conf_file = $conf_dir . "nginx.conf"; 46 | 47 | unless(-r $conf_file) 48 | { 49 | return "Nginx needs to be installed."; 50 | } 51 | 52 | unless (-d $conf_dir . $sites_available_dir) 53 | { 54 | mkdir($conf_dir . $sites_available_dir); 55 | } 56 | 57 | unless (-d $conf_dir . $sites_enabled_dir) 58 | { 59 | mkdir($conf_dir . $sites_enabled_dir); 60 | } 61 | 62 | 63 | open(CONF, $conf_file); 64 | 65 | local $/ = undef; 66 | my $filestring = ; 67 | close(CONF); 68 | 69 | #TODO: check if include directive not comment "# include /etc/nginx/sites-enabled/*;" 70 | my $pattern = "include " . $conf_dir . $sites_enabled_dir . "\\*;"; 71 | 72 | unless ($filestring =~ /$pattern/) 73 | { 74 | 75 | chop($filestring); 76 | 77 | $filestring .= "\tinclude " . $conf_dir . $sites_enabled_dir . "*;\n}"; 78 | 79 | open(CONF, ">", $conf_file); 80 | 81 | print(CONF $filestring); 82 | 83 | close(CONF); 84 | 85 | } 86 | 87 | return undef; 88 | 89 | } 90 | 91 | sub feature_clash 92 | { 93 | return undef; 94 | } 95 | 96 | sub feature_delete 97 | { 98 | my ($d) = @_; 99 | &$virtual_server::first_print("Deleting Nginx site .."); 100 | 101 | unlink($conf_dir . $sites_enabled_dir . $d->{'dom'} . ".conf"); 102 | unlink($conf_dir . $sites_available_dir . $d->{'dom'} . ".conf"); 103 | 104 | &$virtual_server::second_print(".. done"); 105 | 106 | } 107 | 108 | sub feature_depends 109 | { 110 | return undef; 111 | } 112 | 113 | sub feature_disable 114 | { 115 | my ($d) = @_; 116 | &$virtual_server::first_print("Disabling Nginx website .."); 117 | unlink($conf_dir . $sites_enabled_dir . $d->{'dom'} . ".conf"); 118 | reload_nginx(); 119 | &$virtual_server::second_print(".. done"); 120 | } 121 | 122 | sub feature_disname 123 | { 124 | return "Nginx website"; 125 | } 126 | 127 | sub feature_enable 128 | { 129 | 130 | my ($d) = @_; 131 | &$virtual_server::first_print("Re-enabling Nginx website .."); 132 | symlink($conf_dir . $sites_available_dir . $d->{'dom'} . ".conf", $conf_dir . $sites_enabled_dir . $d->{'dom'} . ".conf"); 133 | reload_nginx(); 134 | &$virtual_server::second_print(".. done"); 135 | 136 | 137 | } 138 | 139 | sub feature_import 140 | { 141 | 142 | } 143 | 144 | sub feature_label 145 | { 146 | return "Setup Nginx website for domain?"; 147 | } 148 | 149 | sub feature_links 150 | { 151 | 152 | } 153 | 154 | sub feature_losing 155 | { 156 | return "The Nginx config file for this website will be deleted."; 157 | } 158 | 159 | sub feature_modify 160 | { 161 | my ($d, $oldd) = @_; 162 | if ($d->{'dom'} ne $oldd->{'dom'}) { 163 | } 164 | } 165 | 166 | sub feature_name 167 | { 168 | return "Nginx website"; 169 | } 170 | 171 | sub feature_restore 172 | { 173 | 174 | } 175 | 176 | sub feature_setup 177 | { 178 | my ($d) = @_; 179 | &$virtual_server::first_print("Setting up Nginx site .."); 180 | 181 | my $file; 182 | 183 | if($config{'log_dir'} eq "") 184 | { 185 | $log_dir = "$d->{'home'}/logs/"; 186 | } 187 | 188 | open($file, ">" . $conf_dir . $sites_available_dir . $d->{'dom'} . ".conf"); 189 | 190 | $template = ""; 191 | 192 | $template_file = abs_path(__FILE__); 193 | $template_file =~ s/virtual_feature.pl/nginx_conf.tpl/; 194 | 195 | open(TEMPLATE,$template_file) or die "Template opening failed: check file ".$template_file; 196 | 197 | while ($line =